它很烦人

以下代码:

var arrays = [1,2,3];
alert('Array has ' + (arrays.length > 0) ? 'multiple':'single' + ' value');

警报为multiple(字符串为),未将与三元结果连接在一起。

但是此代码:
var arrays = [1,2,3];
alert('Array has ' + ((arrays.length > 0) ? 'multiple':'single') + ' value');

警报为Array has multiple value,其中字符串与三进制结果串联在一起。

我的问题是:
  • 为什么第一个代码未与字符串连接。
  • 第一个代码中是否有语法错误,如果可以,为什么不抛出错误。
  • 最佳答案

    您的第一个示例以这种方式解析

    alert(('Array has ' + (arrays.length > 0)) ? 'multiple':('single' + ' value'));
    

    鉴于+operator precedence?:高得多。

    09-11 19:10
    查看更多