【问题标题】:Gratuitous parentheses around expression表达式周围的无端括号
【发布时间】:2019-08-26 19:25:41
【问题描述】:

我有这个声明

if ((value && value !== "something") || (value2 && value2 !== "somethingelse")) {
}

ESLint 告诉我这个:

表达式周围的括号。

我可以去掉内括号吗?我认为这会破坏 if 语句。

【问题讨论】:

  • 是什么让你这么想?在你使用的运算符中,the docs!== 的优先级最高,然后是&&,然后是||,所以 ESLint 没有骗你。
  • 但是,有了这种陈述,我会留下它们。 对于人类读者来说更明显
  • 我总是在这样的布尔运算周围加上括号。请记住,对于您和您的同事来说,linting 不如可读性重要。
  • 我也是这么认为的,我从不认为 ESLint 是在骗我,我认为括号是必要的,因为我在学校学到了这一点,这就是我问的原因。但我会留下它们以提高可读性

标签: javascript eslint


【解决方案1】:

根据Operator Precedence可以去掉内括号:

var value = '1';
var value2 = 'somethingelse';
if ((value && value !== "something") || (value2 && value2 !== "somethingelse")) {
    console.log('ORIG: ok');
} else {
    console.log('ORIG: nok');
}


var value = '1';
var value2 = 'somethingelse';
if (value && value !== "something" || value2 && value2 !== "somethingelse") {
    console.log('ok');
} else {
    console.log('nok');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多