2013-05-22 27 views
1

下面的行:JavaScript函数表达

var A = function def() {alert();}; 

只有A()调用函数。 def()不。为什么这样?左侧不是功能的延迟吗?

回答

0

在函数表达式中,函数名称主要用于自我调用。 IRL这个特性在匿名函数和递归调用的情况下很方便,例如

(function def() { 
    // ... 
    def(); 
})(); 
+0

好吧有道理。但是为什么def()在问题中从外部没有影响,而如果它是使用“function def(){}”定义的呢? – Boyang

+1

@CharlesW。这是因为函数表达式的名称在其作用域之外是不可见的。 – VisioN

+0

好的,谢谢!这也是我们可以拥有许多匿名功能的原因吗?因为他们被限制在他们的范围内,所以没有冲突或含糊不清? – Boyang

相关问题