A partire dal 14 gennaio 2016, JSLint ha iniziato a lamentarsi delle dichiarazioni var
o let
che hanno più di una variabile per dichiarazione e ha creato una nuova direttiva, multivar
che ignora questo nuovo "problema".Previsto ';' e invece vide ','. - Impostazione multivar JSLint
Questo è un cambiamento piuttosto significativo, come le versioni precedenti si lamentano se fatto hanno due var
s nello stesso blocco di codice.
Cioè, a partire da oggi (18 gennaio 2016), questo codice ora rompe in 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);
}
L'errore riportato è, Expected ';' and instead saw ','.
per la linea var c,d;
La correzione "corretta" è a quanto pare questo:
/*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);
}
si noti che questo codice appena corretto avrebbe prodotto l'errore, Error: combine_var
, a 01.235..
Le uniche descrizioni per il cambiamento da Crockford che posso trovare sembrano essere this post on Google Plus:
JSLint ora ha un'opzione
multivar
che tollera più nomi di essere dichiarato in un unico var, lasciate, o const.
... e un rapido accenno sul website instructions ...
tollerare variabili dichiarazioni multiple per dichiarazione
multivar
true
se,let
oconst
dichiarazionevar
può dichiarare due o più variabili in una singola affermazione.
La modifica di multivar
su JSLint.com non sembra essere ancora nel repository GitHub. Vedi i due check-in (1, 2) dal titolo "var" per il 14 gennaio. Questi due fanno in JSLint il codice seguendo il nuovo requisito, ma non aggiungere (afaict) la direttiva multivar
descritta e in uso su JSLint.com.
Qualcuno può dirmi perché più linee var
sono incoraggiate/richieste ora, a parte il solito, "Dovresti ignorare JSLint", le risposte? Cioè, perché era necessaria una singola var prima del (suppongo che incoraggerei una comprensione del sollevamento), e perché questo ragionamento è improvvisamente discutibile?
Se avete intenzione di votare il basso e/o votare per chiudere, un commento per questo sarebbe terribilmente utile. Grazie! – ruffin
Non sono sicuro del downvote, ma questo è un cambiamento molto radicale, non me lo aspettavo (soprattutto perché è disabilitato di default). –
Ehi @JoshCrozier! Sì, sorpreso anche da me. Non è solo un cambiamento, come quando JSLint ci ha consigliato di smettere di usare 'for' loops di recente, è un 180 piatto rispetto a quanto richiesto in precedenza. – ruffin