截至2016年1月14日,JSLint已开始抱怨每个声明有多个变量的var
或let
声明,并创建了一个忽略的新指令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
如果var
,let
或const
语句可以在单个语句中声明两个或更多变量。
JSLint.com上的multivar
更改似乎还没有出现在GitHub回购中。查看标题为&#34; var&#34;的两个签到(1,2) 1月14日。这两个使JSLint中的代码遵循新的要求,但不要(afaict)添加在JSLint.com上描述和使用的multivar
指令。
任何人都可以告诉我为什么现在鼓励/需要多个var
行,除了通常的&#34;你应该忽略JSLint,&#34;答案?也就是说,为什么在之前需要单个var(我猜想鼓励理解提升),为什么这个推理突然没有用?
答案 0 :(得分:3)
来自AirBNB风格指南。
以这种方式添加新变量声明更容易,而且您永远不必担心交换a;用于a,或引入仅用于标点符号的差异。您也可以使用调试器逐步执行每个声明,而不是一次跳过所有声明。