如何修复jslint'&&'子表达式应该包含在parens错误中

时间:2011-09-27 14:31:28

标签: javascript jslint

我把所有内容放在括号中但是下面的代码仍然在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;
    }
}

3 个答案:

答案 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需要我的运算符和操作数之间的空格是荒谬的。我认为没有空间时会更清楚。