我把所有内容放在括号中但是下面的代码仍然在jslint中抛出错误:
Problem at line 5 character 104: The '&&' subexpression should be wrapped in parens.
if ((typeof (c1) === 'string') && (typeof (c2) === 'string') && (c1 !== n...
如何解决?
"use strict";
function t() {
var c1, c2;
if (((typeof (c1)) === 'string') && ((typeof (c2)) === 'string') && (c1 !== null) && (c2 !== null) && ((c1.trim()) === '') || ((c2.trim()) !== '')) {
return;
}
}
答案 0 :(得分:6)
它抱怨表单if(a && b && c || d)
,因为(我想),&&
或||
优先是不是很明显。修复它看起来像if(a && b && (c || d))
,它将停止抱怨。
答案 1 :(得分:0)
我认为它想要这个:
if (((typeof (c1) === 'string') && (typeof (c2) === 'string') && (c1 !== null) && (c2 !== null)) && ((c1.trim()) === '') || ((c2.trim()) !== '')) {
将&&&和左边的4个表达式包裹起来。在100。
答案 2 :(得分:0)
我非常肯定你想要以下:
function t() {
var c1, c2;
if (typeof c1 === 'string' && typeof c2 === 'string' && c1 !== null && c2 !== null && (c1.trim() === '' || c2.trim() !== '')) {
return;
}
}
并不是每个人都知道布尔逻辑的优先级,因此他们希望您将c1.trim() || c2.trim()
语句包装在括号中,以便清楚它们是如何运行的。
作为旁注,我认为jslint需要我的运算符和操作数之间的空格是荒谬的。我认为没有空间时会更清楚。