您的位置:首页 > Web前端 > JavaScript

【javascript笔记】声明函数的三种方式<二>

2014-10-27 22:30 393 查看
最近 在看js书籍,记录了一下:

通常我们使用的是 使用函数声明语法定义:

function functionName(arg1,arg2){
       //to-do 
}


但是我们偶尔也会这样 用函数表达式 定义函数:
var sum =function(arg1,arg2){
         //to-do
}


两种方式有什么区别呢,其实区别不是很大 ,实际上js里面 函数也是对象。

下面引用一个例子:

function sum(arg1,arg2){

              return arg1+arg2;

}

alert(sum(10,10));//输出20

var anotherSum=sum;//实际上传递的只是一个引用

alert( anotherSum(10,10));//输出20

sum=null;

alert(anotherSum(10,10));// 仍然输出的20 由于sum现在指向的是一个空引用  但是 新的变量anotherSum指向了 function对象


还有一种不推荐的定义函数的方式, var sum =new Function('arg1','arg2','return arg1+arg2') ; 这种语法会导致解析两次 代码,请自行忽略

函数声明和 表达式 的明显区别 是解析器在执行环境加载数据的时候会先读取函数声明 也就是 function sum(arg1,arg2) 这种声方式,并且让其在执行任何代码之前可以使用(可以执行);

//下面的代码不会报错

alert(sum(10,10));

function sum(arg1,arg2){

return arg1+arg2;

}

//但是改为这样

alert(sum(10,10));

var sum=function (arg1,arg2){

return arg1+arg2;

}

//会再第一句出报错


//函数声明 和表达式 这样混用是可以的 但是 请注意 safari中 这样是会报错

var sum=function sum(arg1,arg2){

return arg1+arg2;

}

若我们想访问函数的指针 而不是去 执行函数 就不加上括号(当然包括里面的参数):
http://www.cnblogs.com/haogj/p/3293592.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: