2012-03-02 65 views
31

我完全贊同此JSLint錯誤。我怎麼能忍受它?有沒有標誌或複選框?預期轉讓或函數調用,而是看到一個表達式

你得到它時,你不喜歡的東西:

v && arr.push(v); 

,而不是:

if (v) { 
    arr.push(v); 
} 

都做同樣的事情。如果你把:

window.test = function(v) { 
    'use strict'; 
    var arr = []; 
    if (v) { 
     arr.push(v); 
    } 
    return arr; 
}; 

minifier它minifies到這個反正:

window.test=function(a){var b=[];a&&b.push(a);return b}; 

回答

73

我不認爲JSLint的有一個選項把它們關掉。

JSHint(具有更多選項的分支)有一個選項:expr選項記錄爲「if ExpressionStatement should be allowed as Programs」。

+0

+1感謝網站:) – diEcho 2012-03-02 13:32:08

+0

@diEcho:你也可以在本地下載和使用它(這就是我所做的)。我通過NodeJS運行它,並設置了我的首選選項,*顯着*幫助我對正確代碼的信心。 :-) – 2012-03-02 13:35:47

+8

http://www.jshint.com/docs/options/#expr在將來節省時間 – 2014-03-15 22:08:59

9

在JSLint中沒有這個選項。您可以使用繞過它:

var dummy = v && arr.push(v); 

NB:dummy後計算結果爲true

另一個解決方法可以是:

function expression(statement) { 
'use strict'; 
return statement; 
} 
expression(v && arr.push); 
+6

它會工作,但它很愚蠢。縮小器實際上會對此進行分類,但爲了可讀性,僅使用比if更多的if語句會更好。 – ryanve 2012-03-02 13:50:43

+0

的確如此。但你要求一種容忍的方式是。增加了另一種解決方法。這就像克羅克福德說的某個地方:* jsLint旨在爲程序員的屁股痛苦*;〜) – KooiInc 2012-03-02 13:54:15

+0

錯誤的奇妙&&破解不工作在jsLint ...也許取決於版本... – faeb187 2016-02-12 16:23:26

30

您可以添加以下行忽略警告:

/* jshint -W030 */

你可以閱讀更多關於它here

+3

答案是完全無關的這個問題是關於JSLint,而不是JSHint。 – 2015-02-02 19:28:34

+13

然而,它仍然是大多數在此登陸的人最有用的答案。 – 2015-03-18 21:01:22

+2

「完全不相關」?因爲JSHint與JSLint完全無關? – iconoclast 2015-12-17 23:17:46

相關問題