Javascript 函数的定义的方式有不止一种。

第一种方式:

function fn1(){

alert(typeof fn1);

alert(“fn1”);

}

在调用的时候直接就可以fu1();

函数运行的结果就是两个alert:function   fn1.

有必要说明的是,function是一个对象(在后面对对象的说明中也会具体细说),新定义的函数就是function这个类的一个实例。但是function和object的区别就在于在定义两个函数实例fn1和fn2的过程中,实现了对function的的拷贝。函数虽然是一个对象,区别在于:对象通过引用的只想完成对象的赋值,函数是通过对对象的拷贝完成。

这里举例说明:

function fn1(){

alert(“fn1”)

}

var fn2=fn1;

fn2();

fn1();

fn1=function(){

alert(“fnn1”)

}

fn2();

fn1();

这里输出的就是fn1 fn1 fn1 fnn1,说明的是:在对fn1重新定义之后,内存又给fn1开辟了一块新的空间,fn2并没有受到干扰。这是函数和对象的区别。

对比试验:对象的定义

var o1=new Object;

var o2=o1;

o2.name="lele";

alert(o1.name);

这里输出的是lele,意思就是说我们对o2的属性改变之后,o1对应的参数跟随变化。对于对象而言,是通过引用来完成赋值,牵一发而动全身。

既然函数就是一个类,那么可以用构造函数的方式构建函数如下:

第二种定义方式(构造函数的方法):

var fun =new Function("num1","num2","alert(num1+num2)");

fun(2,3);

这里输出5.

下面说一下函数的传值:

function callfun(reg,arg){

return reg(arg)

}

function fun(str){

alert("Hello "+str)

}

callfun(fun,"world!")

用到的是函数之间的值传递。函数既然是一个类,那么这里就可以把函数通过参数来传递。这是很令人震惊的!第一个函数callfun第一个参数就是一个函数名,特用来触发第二个函数fun,第二个函数通过alert将拼接好的字符串显示出来。最后的结果就是Hello world!

下面说一下函数的重载,就是针对不同参数的函数,达到理想的结果:

function fn1(num1,num2){

alert(num1+num2)

}

function fn1(num1){

alert(num1)

}

fn1(3,2);

fn1(3);

很遗憾这里返回的都是3,也就是说,函数重载并没有起作用。所以javascript是不存在函数的重载现象的。

值得注意的是如果是

function fn1(num1){

alert(num1)

}

function fn1(num1,num2){

alert(num1+num2)

}

fn1(3,2);

fn1(3);

这里返回5和NaN。所以,对于javascript函数来说,参数只能多,不能少。

Javascript函数(定义、传值、重载)的更多相关文章

  1. JavaScript 函数定义方法

    JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立 ...

  2. 深入理解javascript函数定义与函数作用域

    最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...

  3. JavaScript函数定义和调用 变量作用域

     本文是笔者在看廖雪峰老师JavaScript教程时的个人总结   JavaScript中函数定义可以是这样的格式 function 函数名(参数) {     函数体 } 也可以是这样的格式     ...

  4. javascript函数定义表达式和函数声明的区别

    在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...

  5. [转]javascript函数定义表达式和函数声明的区别

    在javascript中,函数有两种定义写法,函数定义表达式和函数声明,其例子分别如下所示: var test = function(x){ return x; } function test(x){ ...

  6. JavaScript 函数定义

    JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function function ...

  7. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

  8. JavaScript 函数定义和调用

    普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...

  9. javascript函数定义以及常见用法

                  我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...

  10. js基础之javascript函数定义及种类-普通涵数-自执行函数-匿名函数

    普通函数 1.不带参数 function fucname(){ alert("hello"); } funcname() 2.带参数 function funcname(arg){ ...

随机推荐

  1. MySQL主从复制的原理及配置

    [http://www.jb51.net/article/50053.htm]   MySQL 数据库的高可用性架构:         集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单 ...

  2. (1) css的核心基础

     css的核心基础 1.css的基本语法在具体使用css之前,请各位兄弟姐妹先思考一个生活中的问题,一般情况下我们是如何描述一个人的呢? 小明{ 民族:汉族: 性格:温柔: 性别:男: 体重:68kg ...

  3. 远程调用WMI安装软件

     Invoke-WMIMethod  -ComputerName $ip -Credential $cred -path Win32_product -Name Install -ArgumentLi ...

  4. Android常见工具类封装

    MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...

  5. C++ Interview - using new and delete to alloc and free memory

    1. dynamic create object and initialization int *pi = new int; // pi points to an uninitialized int ...

  6. Codeforces Round #260 (Div. 1) C. Civilization 并查集,直径

    C. Civilization Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/probl ...

  7. [Angular 2] Move and Delete Angular 2 Components After Creation

    After the original order is set, you can still leverage methods on the Angular 2 ViewContainer to re ...

  8. 如何在Fedora或CentOS上使用Samba共享

    如今,无论在家里或者是办公场所,不同的电脑之间共享文件夹已不是什么新鲜事了.在这种趋势下,现代操作系统通过网络文件系统的方式使得电脑间数据的交换变得简单而透明.如果您工作的环境中既有微软的Window ...

  9. 学了这四招,你在Linux上观看Netflix视频不发愁

    导读 一份崭新的Linux发行版已经安装到你的电脑上,你完全准备好使用免费开源办公软件处理长时间的工作.但是你可能会问自己:"难道除了工作,就没有乐趣可言?我就是想观看Netflix视频!& ...

  10. python脚本初探---新手如何直接编写一个hello world模块即可执行的.py文件

    废话不多说,就讲一下这个背景吧: 事情是这个样子的~ 本着好学的精神,咱就买了本书,学习python结果呢,发现python的教程都是一个样子滴,上来的第一个hello world 都是通过IDLE来 ...