2012-03-02 10 views
31

Bu JSLint hatasıyla tamamen havalıyım. Nasıl buna tahammül edebilirim? Bunun için bayrak ya da onay kutusu var mı? Her ikisi de aynı kesin bir şey yapmakBir atama veya işlev çağrısı bekleniyordu ve bunun yerine bir ifade gördü

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

: aksine

v && arr.push(v); 

: Eğer gibi şeyler yaparken

sen git. Eğer koyarsanız:

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

minifier içine yine bu aşağı küçültür:

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

cevap

73

Ben JSLint o kapatmak için bir seçenek olduğunu sanmıyorum.

JSHint (daha fazla seçenek içeren bir çatal) bununla birlikte bunun için bir seçeneğe sahiptir: "ExpressionStatement, Programlar olarak izinliyse" şeklinde belgelenen expr seçeneği.

+0

+1 Web sitesi için teşekkürler :) – diEcho

+0

@diEcho: Ayrıca yerel olarak yükleyebilir ve kullanabilirsiniz (yaptığım işte bu). Tercih ettiğim seçenekler kümesiyle NodeJS üzerinden çalıştırıyorum, * önemli ölçüde * doğru kodlara güvenmeme yardımcı oluyor. :-) –

+8

http://www.jshint.com/docs/options/#expr gelecekte zaman kazanmak için –

9

JSLint'te bunun için seçenek yoktur. Şu bağlantıyı kullanarak aşmak edebilirsiniz:

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

Not: dummy bundan sonra true olarak değerlendirilir.

başka bir geçici çözüm olabilir:

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

Çalışacak ama aptalca. Kıymetlendirici aslında bunu çözecek ve okunabilirlik için "if" ifadesini sadece IMO'dan daha iyi kullanmanız daha iyi olacaktır. – ryanve

+0

Bu doğru. Ama tolere etmenin bir yolunu istedin. Başka bir geçici çözüm eklendi. Böyle bir yerde Crockford söyledi: * jsLint programcılar için eşek bir acı olması için tasarlanmıştır *;) – KooiInc

+0

WRONG harika && hack jsLint içinde çalışmıyor ... belki de sürümüne bağlıdır ... – faeb187

30

O uyarıyı görmezden aşağıdaki satırı ekleyebilirsiniz:

/* jshint -W030 */

Okuyabiliyorsun daha bu konuda here.

+3

Cevap tamamen ilgisiz JSLint ile ilgili soruya, JSHint değil. –

+13

Yine de buraya inen insanların çoğunluğu için en yararlı cevabı. –

+2

"tamamen ilgisiz"? JSHint JSLint ile tamamen ilgisiz olduğundan – iconoclast

İlgili konular