截至2016年1月14日,JSLint開始抱怨var
或let
聲明,每個聲明有多個變量,並且創建了一個新指令multivar
,忽略了這個新「問題」。預期';'而是看到','。 - JSLint multivar setting
這是一個非常重要的變化,因爲如果您在確實有在同一代碼塊中有兩個var
s,則早期版本會發生抱怨。
也就是說,截至今天(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;
「正確」 的解決方法是顯然這:
/*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);
}
注意,這個新正確的代碼會產生的誤差,Error: combine_var
,在earlier versions of JSLint。
從克羅克福德的變化,我能找到的唯一的描述似乎是this post on Google Plus:
JSLint的現在有一個
multivar
選項容忍在一個變種正在申報多個名字,讓,或const語句。
...並在website instructions快速提...
容忍每條語句多個變量聲明
multivar
true
如果var
,let
,或const
語句可以聲明兩個或單個語句中的更多變量。
在JSLint.com上的multivar
更改似乎還沒有在GitHub倉庫中。請參閱1月14日標題爲「var」的兩個簽名(1,2)。這兩個使JSLint中的代碼符合新要求,但不(afaict)添加在JSLint.com上描述和使用的multivar
指令。
有人可以告訴我爲什麼現在鼓勵/需要多個var
行,除了通常的「你應該忽略JSLint」嗎?也就是爲什麼在之前需要單個變量(我想是爲了鼓勵對提升的理解),以及爲什麼這個推理突然沒有意義?
如果你打算否決和/或投票關閉,評論,爲什麼會是非常有幫助的。謝謝! – ruffin
不確定downvote,但這是一個非常激進的變化,我絕對沒有想到(特別是因爲它是默認禁用)。 –
嘿@JoshCrozier!是的,我也感到驚訝。這不僅僅是一個變化,就像JSLint建議我們最近停止使用'for'循環一樣,它與之前的要求相差180。 – ruffin