Difference between assigning function to variable or not
我参与了几个不同的项目,我已经看到了两种创建jQuery / JavaScript函数的方法。
首先:
1 2 3 | function testFunction(){ }; |
第二:
1 2 3 | var testFunction = function (){ }; |
这些之间有区别吗?
主要区别在于第一个(函数声明)被提升到声明它的作用域的顶部,而第二个(函数表达式)则没有。
这就是你能够在调用之后调用已声明的函数的原因:
1 2 | testFunction(); function testFunction() {} |
您不能使用函数表达式执行此操作,因为赋值是就地发生的:
1 2 | testFunction(); var testFunction = function() {}; //TypeError |
还有第三种形式(命名函数表达式):
1 | var testFunction = function myFunc() {}; |
在这种情况下,标识符
另请注意,变量声明也是如此:
1 2 | console.log(x); //undefined (not TypeError) var x = 10; |
您可以想象JavaScript引擎会像这样解释代码:
1 2 3 | var x; //Declaration is hoisted to top of scope, value is `undefined` console.log(x); x = 10; //Assignment happens where you expect it to |