截至2016年1月14日左右,JSLint开始抱怨每个声明中有多个变量的
这是一个相当重要的变化,因为早期版本会抱怨在同一代码块中有两个
也就是说,截至今天(2016年1月18日),此代码现在在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);
}
报告的错误是,
期望';'而看到了','。
,出现在var c,d;
这一行。“正确”的修复方法似乎是这样的:
/*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);
}
请注意,这段新的正确代码在早期版本的JSLint中会产生错误Error: combine_var
。
我能找到的Crockford关于这个变化的唯一描述似乎是在Google Plus上的这篇文章中:
JSLint现在有一个
multivar
选项,它允许在单个var
、let
或const
语句中声明多个名称。
... 还有网站说明上的快速提及...
容忍每个语句中多个变量声明
multivar
如果一个var
、let
或const
语句可以在一个语句中声明两个或更多个变量,则为true
。
multivar
在JSLint.com上的更改似乎还没有出现在GitHub仓库中。请参见两个提交(1,2),标题为“var”的14日。这两个提交使得JSLint中的代码遵循了新的要求,但是(据我所知)并没有添加描述和在JSLint.com上使用的multivar
指令。
除了通常的“您应该忽略JSLint”答案之外,有人能告诉我为什么现在鼓励/要求多个var
行吗?也就是说,为什么以前需要单个var(我猜是为了鼓励hoisting的理解),而这个原因突然变得无关紧要了呢?
for
循环一样,它是与以前所需完全相反的改变。 - ruffin"use strict"'
,有一个var array, ncn = node.className;
!当我对它进行lint时,我得到了一个Expected ';' and instead saw ','.
。至少这表明这是相当新的,我想。 - ruffin