2013-02-18 12 views
7

Należy przyjąć "użyj ścisłego"; a także założyć, że JSLint jest włączony, a błędów nie można zignorować.Czy "Bad Line Breaking" jest przestarzałe z "use strict"?

znajdę operatorów i '' wszczęła list o wiele bardziej czytelny,

np .:

var i = 0 
    , j = 1 
    , someLongVariablename1 
    , someLongVariablename2 
    , someLongVariablename3 
    , someLongVariablename4; 

if((
    'dcr' === cmd 
     && (action) 
     && ('get' === actionHttp || 'post' === actionHttp) 
     && whatever 
    ) { ... } 

Stąd moje pytanie:
jest "zły linia łamania" przestarzałe z "use strict"?

EDYCJA: "użyj ścisłego"; nie uniemożliwi wykonania złej linii powodującej złamanie kodu. Może uniemożliwić wykonanie niektórych rodzajów błędów.

Widzę, że JSLint i JSHint traktują błędne łamanie linii w różny sposób. JSHint jest o wiele bardziej przyjazny dla preferowanej przeze mnie składni.

To może być rozwiązanie dla innych, którzy nad tym pracują.

Odpowiedz

5

Niestety, nie wyłącza horroru, który jest automatic semicolon insertion, a więc "złe" podziały linii pozostają problemem. Na przykład:

(function() { 
    "use strict"; 

    console.log(foo()); 

    function foo() { 
    var a = 1, b = 2; 

    return 
    a + b; 
    } 
})(); 

Live Example | Source (trzeba otworzyć konsolę i patrzeć na nią)

To nadal loguje undefined zamiast 3, ponieważ ASI w rzutach i dodaje średnik po return w foo.

+0

Używamy bardzo surowych ustawień w JSLint. Napisany kod jest kompletnym wzorcem JSLint, ponieważ JSLint podaje trzy błędy: * oczekiwano; błąd * błąd nieosiągalnego kodu –

+1

Edytowałem pytanie: Zakładam rygorystyczne użycie JSLint, więc wykonanie NIE będzie kontynuowane, jeśli błędy JSLint są na miejscu. Jednak to naprawdę komplikuje pytanie ... pierwotnie proste pytanie, a twoja odpowiedź jest po prostu słuszna. Zaznaczam twoją odpowiedź w prawo. –

Powiązane problemy