首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-sequences

逗号运算符包含多个表达式,其中只有一个是预期的。它从左到右评估每个操作数并返回最后一个操作数的值。但是,这经常会掩盖副作用,其使用往往是一种意外。以下是一些序列的例子:

var a = (3, 5); // a = 5

a = b += 5, a + b;

while (a = next(), a && a.length);

(0, eval)("doSomething();");

规则细节

此规则禁止使用逗号运算符,但以下情况除外:

  • for语句的初始化或更新部分。
  • 如果表达式序列显式包含在圆括号中。

此规则的错误代码示例:

/*eslint no-sequences: "error"*/

foo = doSomething(), val;

0, eval("doSomething();");

do {} while (doSomething(), !!test);

for (; doSomething(), !!test; );

if (doSomething(), !!test);

switch (val = foo(), val) {}

while (val = foo(), val < 42);

with (doSomething(), val) {}

此规则的正确代码示例:

/*eslint no-sequences: "error"*/

foo = (doSomething(), val);

(0, eval)("doSomething();");

do {} while ((doSomething(), !!test));

for (i = 0, j = 10; i < j; i++, j--);

if ((doSomething(), !!test));

switch ((val = foo(), val)) {}

while ((val = foo(), val < 42));

// with ((doSomething(), val)) {}

何时不使用它

如果使用逗号运算符的序列表达式是可接受的,则禁用此规则。另一种情况是您可能想要报告逗号运算符的所有用法,即使它们包含在括号中或for循环中。你可以实现这个使用规则no-restricted-syntax

{
    "rules": {
        "no-restricted-syntax": ["error", "SequenceExpression"]
    }
}

版本

该规则在 ESLint 0.5.1 中引入。

资源

扫码关注腾讯云开发者

领取腾讯云代金券