Function statement vs function expression weird behaviour
1 2 3 4 5 6 | var a = function b() { }; console.log(typeof b); //gives undefined console.log(typeof a); //gives function |
为什么两个输出的差异?
我理解函数表达式和函数语句之间的区别,但无法理解上面的输出。
据我所知,javascript使
有什么解释吗?
因为命名函数表达式的名称的作用域是该表达式。
1 2 3 4 5 6 7 8 9 | var a = function b() { console.log(typeof b); //gives function console.log(typeof a); //gives function }; console.log(typeof b); //gives undefined console.log(typeof a); //gives function a(); |
Why the difference in the two outputs?
为一个名为
您可能期望
1 2 3 | function b() { } console.log(typeof b); |
但这只是处理函数声明和函数表达式的不同之处。
用
1 2 3 | function b(){ } |
您声明了一个名为
要声明匿名函数,必须在声明中省略函数名,如下所示:
1 2 3 | function(){ }; |
这一个只是一个函数文字,您可以将它赋给这样的变量:
1 2 3 | var a = function(){ }; |