Javascript 无法理解如果我更改参数值,为什么此函数返回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”,

我正在学习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”,对此我真的很困惑,请帮助,谢谢。

该函数返回
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));