期待&#39 ;;'而是看到','。 - JSLint多变设置

时间:2016-01-18 19:28:20

标签: javascript jslint

截至2016年1月14日,JSLint已开始抱怨每个声明有多个变量的varlet声明,并创建了一个忽略的新指令multivar这个新问题"。

这是一个非常重要的变化,因为如果 在同一个代码块中有两个var,早期版本会抱怨。

也就是说,截至今天(2016年1月18日),此代码现已在JSLint中断:

/*jslint white:true, browser:true, devel:true */
function a(b) {
    "use strict";
    var c, d; // <<< Now bad!!
    d = "test";
    c = d + b;
    console.log(c);
}

报告的错误是Expected ';' and instead saw ','.

var c,d;

&#34;正确&#34;修复显然是这样的:

/*jslint white:true, browser:true, devel:true */
function a(b) {
    "use strict";
    var c;
    var d;  // <<< this *used* to be forbidden.
    d = "test";
    c = d + b;
    console.log(c);
}

请注意,这个新的正确代码会在earlier versions of JSLint中产生错误Error: combine_var

我能找到的对Crockford变更的唯一描述似乎是this post on Google Plus

  

JSLint现在有一个multivar选项,可以容忍在单个var,let或const语句中声明多个名称。

...并快速提及website instructions ...

  

容忍每个语句的多个变量声明
  multivar
  true如果varletconst语句可以在单个语句中声明两个或更多变量。

JSLint.com上的multivar更改似乎还没有出现在GitHub回购中。查看标题为&#34; var&#34;的两个签到(12) 1月14日。这两个使JSLint中的代码遵循新的要求,但不要(afaict)添加在JSLint.com上描述和使用的multivar指令。

任何人都可以告诉我为什么现在鼓励/需要多个var行,除了通常的&#34;你应该忽略JSLint,&#34;答案?也就是说,为什么在之前需要单个var(我猜想鼓励理解提升),为什么这个推理突然没有用?

1 个答案:

答案 0 :(得分:3)

来自AirBNB风格指南。

  

以这种方式添加新变量声明更容易,而且您永远不必担心交换a;用于a,或引入仅用于标点符号的差异。您也可以使用调试器逐步执行每个声明,而不是一次跳过所有声明。

有关详情,请参阅:https://github.com/airbnb/javascript#variables