逗号运算符在比较中的用处

时间:2018-02-07 09:00:06

标签: javascript

我在question on SO中看到了如下的比较:

(pNum != ('2','3','4','5','6','7','8','9'))

OP一直试图检查数字是否落在某个范围,但是这段代码是不准确的,因为它总是与括号内的最右边的值比较(即9) 这意味着当pNum = 2比较将返回true而不是false时,OP会期望它能够像inArrayin那样工作。

我的问题是,在任何情况下,这种比较是否对任何实际情况都有用?

1 个答案:

答案 0 :(得分:0)

  

我的问题是,在任何情况下,这种比较是否对任何实际情况都有用?

没有。如您所见,比较仅比较括号内的最后一项。所以它所能完成的只是让读者感到困惑。

如果您打算将变量与一组值进行比较,则可以使用array#includesarray#indexOf >= 0。类似的东西:

console.log(['2','3','4','5','6','7','8','9'].includes('2'));
console.log(['2','3','4','5','6','7','8','9'].includes('6'));
console.log(['2','3','4','5','6','7','8','9'].includes('9'));

// IE 
console.log(['2','3','4','5','6','7','8','9'].indexOf('2') >= 0);
console.log(['2','3','4','5','6','7','8','9'].indexOf('6') >= 0);
console.log(['2','3','4','5','6','7','8','9'].indexOf('9') >= 0);