三元运算符中的+运算符

时间:2013-09-14 17:58:29

标签: javascript recursion

我正在阅读John Resig的 JavaScript Ninja的秘密,我在理解三元运算符在这个递归函数中的工作方式时遇到了一些麻烦:

var  ninja = {
  chirp: function signal(n) {
    return n > 1 ? signal(n - 1) + '-chirp' : 'chirp';
  }
};

+运营商如何在这里工作?我理解它是连接返回的字符串,但signal(n - 1)如何不干扰它?乍一看,它似乎将字符串附加到函数调用。

2 个答案:

答案 0 :(得分:4)

+运算符将-chirp附加到函数调用的结果signal是一个递归函数 - 一个自我调用的函数。

答案 1 :(得分:2)

添加了一些括号后,可能会更清楚地阅读:

return (n > 1) ? (signal(n - 1) + '-chirp') : ('chirp');

或作为普通if条款:

if( n > 1 ) {
  return signal(n - 1) + '-chirp';
} else {
  return 'chirp';
}

实际上,字符串-chirp与递归调用signal()的结果连接在一起。