我刚在一次采访中遇到过这个问题.我没有得到任何答案,所以把它放在StackOverflow上
JS中的一个简单问题,但我无法理解它背后的原因.下面是代码.
var f = function foo(a, b) {
console.log(a + "-" + b); //f(1,2) will print 1-2
//foo(1,2) is undefined.
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做,f(1,2)
它完全正常.
但如果我这样做,foo(1,2)
那就说undefined function
.
为什么会这样?将函数赋值给js变量后,为什么无法使用函数名调用函数?
功能声明:
function f(a,b) { }
Run Code Online (Sandbox Code Playgroud)
功能表达:
var f = function(a,b) { }
Run Code Online (Sandbox Code Playgroud)
在函数表达式中,您还可以指定"内部"函数名称,如下所示:
var f = function foo(a, b) { }
Run Code Online (Sandbox Code Playgroud)
该名称foo
仅在函数内部可见.这通常用于递归函数以确保正确的自引用.
有关函数声明和表达式之间的更多详细差异,请参阅ECMAScript 5规范第13节.
归档时间: |
|
查看次数: |
64 次 |
最近记录: |