【发布时间】:2012-04-25 15:33:45
【问题描述】:
我正在分析来自 John Resig 网站的以下两个 url,但我不明白为匿名函数命名有何不同。
我的理解是,匿名函数的名称只能在函数定义内部使用,不能在函数定义之外使用,但在以下链接中会产生巨大的差异
任何解释或参考都会有很大帮助。
我仍然对 #14 中的以下几行感到困惑
var samurai = { yell: ninja.yell };
var ninja = {};
assert( samurai.yell(4) == "hiyaaaa", "The method correctly calls itself." );
当 ninja 现在指向一个空白对象时,Samurai.yell 方法如何仍然能够指向 ninja.yell。
#13 和#14 之间的唯一区别是为#14 中的函数表达式提供名称。
ninja.yell 是否被复制到大喊而不被引用,或者这些 NAMED 函数表达式在某些场景中具有全局范围?
在 #13 和 #14 中发生了同样的事情,唯一的区别是函数在 #14 中命名而在 #13 中未命名,加上 #14 中的 ninja = {} 和 #13 中的 ninja = null。是否有任何关于命名函数表达式的隐藏概念我错过了,这使得 #14 可行而 #13 不可行。
【问题讨论】:
标签: javascript