gpt4 book ai didi

javascript - javascript 中的对象 null 和 { } 行为

转载 作者:行者123 更新时间:2023-11-30 07:24:25 25 4
gpt4 key购买 nike

<分区>

程序 1

var ninja = { 
yell: function(n){
return n > 0 ? ninja.yell(n-1) + "a" : "hiy";
}
};
assert( ninja.yell(4) == "hiyaaaa", "A single object isn't too bad, either." );

var samurai = { yell: ninja.yell }; //ninja.yell already assigned before ninja=null
var ninja = null;

try {
samurai.yell(4); ///WHy this statement not execting??????????
} catch(e){
assert( false, "Uh, this isn't good! Where'd ninja.yell go?" );

程序2

var ninja = { 
yell: function yell(n){
return n > 0 ? yell(n-1) + "a" : "hiy";
}
};
assert( ninja.yell(4) == "hiyaaaa", "Works as we would expect it to!" );

var samurai = { yell: ninja.yell }; ////ninja.yell already assigned before ninja={}
var ninja = {}; //
assert( samurai.yell(4) == "hiyaaaa", "The method correctly calls itself." );//why this is working while the above code is working

正如您从这两个几乎相同的示例中看到的(根据我有限的知识),第二个正在执行而第一个没有。我在上述代码片段的注释中添加了对我的问题的描述。

至此,我的问题是,在 Program1 中 samurai.yell(4) 没有执行。但是,在 Program2 中,samurai.yell(4) 正在执行。两者几乎相同,但为什么第二个执行而第一个不执行?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com