JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 的区别

JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 的区别

之前一只搞不懂这个到底是怎么回事。现在看了卢伊的答案,自己总结一下。

[js]
//
//方法一

var foo = function(){

//code

}

//方法二

var function(){

//code

}
//
[/js]

使用第一种方法:

[js]
//
var FUNCTION_NAME = function(){  //code  }
//
[/js]

为  匿名函数  。使用匿名函数,编译以后变量声明FUNCTION_NAME会”被提前”,但是他的 赋值 (也就是code)并不会被提前。只有在调用的时候才会被初始化。

 

如果使用第二种方法:

[js]
//
function FUNCTION_NAME(){//code}
//
[/js]

这种方式,编译后函数声明和他的赋值都回被提前。

整个函数声明过程在整个执行前就完成了。所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

 

 

 

 

参考:

http://www.zhihu.com/question/19878052

http://www.bootcss.com/article/variable-and-function-hoisting-in-javascript/
http://bonsaiden.github.io/JavaScript-Garden/zh/#function    js秘密花园

分享到:

发表评论

昵称

沙发空缺中,还不快抢~