Javascript 当对象设置为null时,函数调用失败

Javascript 当对象设置为null时,函数调用失败,javascript,Javascript,有人能解释为什么这些Javascript失败了吗 您在调用函数之前编写了ninja=null。 Javascript函数通过引用捕获外部变量,因此函数中的ninja标识符引用变量的当前值。调用函数之前编写的ninja=null。 Javascript函数通过引用捕获外部变量,因此函数内部的ninja标识符引用变量的当前值。此引用仍然保留: var samurai = { yell: ninja.yell }; 因此,调用.yell()是可以的,但是这个调用不是: return n > 0

有人能解释为什么这些Javascript失败了吗


您在调用函数之前编写了
ninja=null


Javascript函数通过引用捕获外部变量,因此函数中的
ninja
标识符引用变量的当前值。

调用函数之前编写的
ninja=null


Javascript函数通过引用捕获外部变量,因此函数内部的
ninja
标识符引用变量的当前值。

此引用仍然保留:

var samurai = { yell: ninja.yell };
因此,调用
.yell()
是可以的,但是这个调用不是:

return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
该调用实际上引用了现在为
null
ninja
,并且
null.yell()
不是函数:)


.

此参考仍然保留:

var samurai = { yell: ninja.yell };
因此,调用
.yell()
是可以的,但是这个调用不是:

return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
该调用实际上引用了现在为
null
ninja
,并且
null.yell()
不是函数:)


.

武士。yell
是来自
忍者
的函数的“副本”。在该函数中,它引用了
ninja
,当执行
Samurai.yell
时,它不再存在。

Samurai.yell
ninja
函数的“副本”。在该函数中,它引用了
ninja
,当执行
Samurai.yell
时,ninja不再存在。

递归函数调用使用yell()中的ninja引用,当您将其设置为null时,它将无法再调用ninja.yell,因为ninja为null

更改:

return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
致:


递归函数调用使用yell()中的ninja引用,当您将其设置为null时,它将无法再调用ninja.yell,因为ninja为null

更改:

return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
致:

它是有效的