我的问题是这个函数是如何工作的,我不明白的是返回部分yell(n-1) + "a"
我期望的结果是3a
但结果是hiyaaaa
。我不知道怎么办。
函数代码
var ninja = {
yell: function yell(n){
return n > 0 ? yell(n-1) + "a" : "hiy";
}
};
ninja.yell(4); //returns hiyaaaa
最佳答案
yell(n-1)+"a"
使用略低的 n
值再次调用该函数,并附加一个 a
无论递归调用返回什么。在这种情况下,你会得到这个链:
ninja.yell(4)
yell(3)+"a"
(yell(2)+"a")+"a"
((yell(1)+"a")+"a")+"a"
(((yell(0)+"a")+"a")+"a")+"a"
((("hiy"+"a")+"a")+"a")+"a"
"hiyaaaa"
不过,我个人会像这样重写该函数:
ninja = {
yell: function(n) {return "hiy"+new Array(n+1).join("a");}
};
关于javascript - 这个功能如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719975/