2012-03-19 14 views
30

Używałem JSLint i otrzymałem komunikat o błędnym wstawieniu spacji po nazwie funkcji. Dlaczego to jest złe?Spacja po nazwie funkcji jest nieprawidłowa?

function coolness() { 
    var hi = "this"; 
} 

ERROR: Problem na linii 1 znak. 19: Nieoczekiwana przestrzeń między 'cool' i '('

+0

To jest złe, ponieważ pewien krępy seniorzy był w złym nastroju, kiedy pisał jslint, jak będziesz stale, jeśli będziesz go nadal używał. –

+0

Konwencje pomagają zachować czytelność kodu. Konieczna jest spójność wielu takich funkcji. – Gherman

Odpowiedz

38

JSLint nie jest składnia JavaScript Sprawdź jak to jest styl sprawdzania Javascript. Zastosowane w nim wskazówki dotyczące stylu są napisane przez Douglasa Crockforda.

Niektórzy ludzie nie zgadzają się z jego decyzjami dotyczącymi stylu, niektórzy ludzie to robią. Nie są prawem i nie musisz ich przestrzegać. Występują alternatywne lintery JS, takie jak JSHint.

Szczególna zasada jest uruchomiony na to :

There should be no space between the name of a function and the (left parenthesis) of its parameter list.

JavaScript nie jest białe znaki liter. Możesz dodać tę przestrzeń, jeśli dzięki niej poczujesz się lepiej. (Nie jest to jednak standard).

+0

Oh ok good. Dziękuję za informację! – supercoolville

10

Proszę sprawdzić javascript convetions kodu poniżej, a znajdziesz odpowiedź

http://crockford.com/javascript/code.html#function

There should be no space between the name of a function and the ((left parenthesis) of its parameter list. There should be one space between the) (right parenthesis) and the { (left curly brace) that begins the statement body. The body itself is indented four spaces. The } (right curly brace) is aligned with the line containing the beginning of the declaration of the function.

.

Przykład dla funkcji:

function outer(c, d) { 
    var e = c * d; 

    function inner(a, b) { 
     return (e * a) + b; 
    } 

    return inner(0, 1); 
} 

Przykład anonimowa funkcja:

div.onclick = function (e) { 
    return false; 
}; 
+0

przykład twojego wyjaśnienia byłby dobry :) – yashhy

+0

@yashhy bardzo dobrze kolega :) –

2

Pod względem technicznym twój kod jest całkowicie poprawny, chociaż niektóre standardy kodowania dyktują, że nie powinno być takiego miejsca (na przykład takiego, które cytował @Bodgan).

W rzeczywistości, podczas kompresji kodu (przy użyciu jednego z wielu narzędzi jak YUI Compressor lub Google Closure Compiler) przestrzenie te są całkowicie usunięty - w tym te, które przed/po klamrowych jak cytowanych przez @Bodgan. I oczywiście jest to poprawne JS.

42

According to Crockford,

Dla nazwie funkcje, nie należy wkładać przestrzeń pomiędzy nazwy funkcji i nawiasów:

function doStuff() { 
    //stuff here 
} 

Dla anonimowych funkcji, należy wkładać przestrzeń między function słów kluczowych i nawiasów:

function() { 
    //stuff here 
} 
+20

IMHO (i Crockford's) sprawia, że ​​dwa rodzaje funkcji są łatwiejsze do rozróżnienia.Myślę, że trzymanie się zasad Crockforda nawet tam, gdzie nie jest to naturalne, jest dobrym pomysłem, ponieważ są one spójne i walidowane za pomocą JSLint. Są to de facto zasada stylu kodu dla Javascript. Jeśli nie masz naprawdę dobrego powodu, aby użyć czegoś innego, nie zrobiłbym tego. (Nie zgadzając się z Crockfordem, ponieważ zawsze kodowałeś inny sposób, nie jest to naprawdę dobry powód) – rjmunro

+3

@rjmunro +1 - za komentarz. Jest to obecnie jedyne miejsce na stronie, które "wyjaśnia DLACZEGO jest złe" (bez zwyczajnego powtarzania reguł konwencji). –

+1

Potrafię odróżnić te dwie osoby. Czy warto dodać specjalną regułę stylu sprawy? Nie sądzę, FWIW, biblioteka d3.js łamie sugestię Crockforda, która jest w porządku przeze mnie. –

Powiązane problemy