我正在分析来自 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 中未命名加上 ninja = {} 在 #14 中和 ninja = null 在 #13 中。是否有任何关于命名函数表达式的隐藏概念我错过了这使得 #14 可行而 #13 不可行。