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秘密花园
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Easy's Blog!
评论