[英]+ 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.