[英]+ operator in a ternary operator
我正在閱讀John Resig的《 JavaScript Ninja的秘密》 ,並且在理解三元運算符如何在此遞歸函數中工作時遇到了一些麻煩:
var ninja = {
chirp: function signal(n) {
return n > 1 ? signal(n - 1) + '-chirp' : 'chirp';
}
};
+
運算符在這里如何工作? 我知道它是串聯返回的字符串,但是signal(n - 1)
不干擾它呢? 乍一看似乎是將字符串追加到函數調用中。
+
運算符將-chirp
附加到函數調用的結果 。 signal
是一個遞歸函數-一個調用自身的函數。
添加一些括號后,可能會變得更加清晰:
return (n > 1) ? (signal(n - 1) + '-chirp') : ('chirp');
或作為普通的if
子句:
if( n > 1 ) {
return signal(n - 1) + '-chirp';
} else {
return 'chirp';
}
因此,實際上,字符串-chirp
與對signal()
的遞歸調用的結果串聯在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.