Javascript 无法理解如果我更改参数值,为什么此函数返回false
我正在学习java脚本,无法理解这个示例,如果我将ninja.yell(4)更改为任何值,例如ninja.yell(5)或3,它将返回false 如果我这样使用函数Javascript 无法理解如果我更改参数值,为什么此函数返回false,javascript,Javascript,我正在学习java脚本,无法理解这个示例,如果我将ninja.yell(4)更改为任何值,例如ninja.yell(5)或3,它将返回false 如果我这样使用函数 var ninja = { yell: function(n) { return n > 0 ? ninja.yell(n - 1) + "a" : "hiy"; } }; console.log(ninja.yell(4)); 它像“hiyaaaa”一样打印一次“hiy”和四次“a”,
var ninja = {
yell: function(n) {
return n > 0 ? ninja.yell(n - 1) + "a" : "hiy";
}
};
console.log(ninja.yell(4));
它像“hiyaaaa”一样打印一次“hiy”和四次“a”,对此我真的很困惑,请帮助,谢谢。该函数返回
hiy
,后跟一个与该数字相等的a
s。您正在将其与hiyaaaa
进行比较
如果更改a
s的编号,则比较将不匹配。ninja.yell(4)=“hiyaaaa”
是一个比较,字符串“hiyaaaa”似乎会根据发送给该方法的编号而改变
忍者吼叫(4)=“hiyaaaa”字面意思是“忍者吼叫(4)是否等于‘hiyaaaa’?”
如果你把它改为5,返回值实际上有5个a,所以它不等于“hiyaaaa”,所以你得到false你的控制台日志检查返回的字符串是否等于某个值,那么它是真的还是假的,你期待什么?这是某种循环,这是我不理解的,你可以这样称呼它,这是一个递归函数调用,因此如果
n
大于零,它将使用n-1
再次调用函数,直到它为零。好了,我们开始吧,现在我明白了,非常感谢
var ninja = {
yell: function(n) {
return n > 0 ? ninja.yell(n - 1) + "a" : "hiy";
}
};
console.log(ninja.yell(4));