gpt4 book ai didi

JavaScript——来自 John Resig 的学习高级 JavaScript 的示例 #10

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

正在阅读 John Resig<​​ 的“学习高级 JavaScript”http://ejohn.org/apps/learn/#10并在下面遇到了这个我不明白的功能。

调用函数 yell 时参数为 4。完成后,参数 4 通过三元运算符运行。如果它大于零(确实如此),那么我们就会得到 yell(n-1) + a我的问题与此有关。

a) yell(n-1) + a 以参数 3 再次调用该函数(即重新启动它)。

b) 如果你执行 (n-1) + a, 你会得到 3a 的结果。 JavaScript 是否将 3a 转换为“aaa”。我问这个是因为在断言行中它说 yell(4) == "hiyaaaa"

c) 转换后,它是否以某种方式将其添加到“hiy”?我不明白怎么办。

d) 如果 JavaScript 确实将 3a 转换为“aaa”的字符串,并以某种方式设法将其添加到“hiy”,我不明白为什么 yell(4)=hiyaaaa。大喊 (n-1) + a = hiyaaa (3as),而不是 hiyaaaa(4"a"s)。

如您所见,我完全糊涂了。

function yell(n){
return n > 0 ? yell(n-1) + "a" : "hiy";
}
assert( yell(4) == "hiyaaaa", "Calling the function by itself comes naturally." );

最佳答案

a) 这个函数利用了递归,所以是的,函数再次被调用,其他所有东西都被压入堆栈等待返回值。b) 不,调用函数时返回值如上所述。c) 见上文。d) 它没有。

可以这样想:

function a(val) {
return val + "a";
}

function b(val) {
return a(val) + "a";
}

如果你调用 b("hiya") 你会得到 hiyaaa。现在不是调用不同的函数,而是调用同一个函数。

关于JavaScript——来自 John Resig 的学习高级 JavaScript 的示例 #10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333513/

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