2012-03-19 12 views
30

私はJSLintを使用していましたが、関数名の後にスペースを入れるとエラーが発生しました。なぜそれは悪いですか?関数名の後のスペースが間違っていますか?

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

ERROR:行1文字19で問題: '涼しさ' と '(' の間に予期しないスペース

+0

あなたがjslintを書いたときに、ある種のかわいい高齢者が悪い気分にあったので、あなたがそれを使い続けるとあなたは絶えずになるので、それは悪いことです。 –

+0

規約は、コードを読みやすくするのに役立ちます。多くのそのような機能にわたる一貫性は不可欠です。 – Gherman

答えて

38

JSLintは同じくらい、それはJavascriptのスタイルチェッカーですとJavascriptの文法チェッカーではありません。それが使用するスタイルガイドラインはDouglas Crockfordによって書かれたものです。

スタイルの決定に同意しない人もいます。彼らは法律ではなく、あなたはそれらに従う必要はありません。 JSHintなどの代替JSリンターが存在します。

あなたに実行している特定のルールはです:

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

Javascriptが空白と小文字が区別されません。あなたが気分を良くするならば、このスペースを追加することができます。 (ただし、標準ではありません)

+0

ああ良いよ。情報ありがとうございます! – supercoolville

10

怒鳴るjavascriptのコードconvetionsをチェックし、あなたの答えを見つけるだろうしてください

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.

機能の例:

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

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

    return inner(0, 1); 
} 

匿名関数の例:

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

あなたの説明のための例は良いでしょう:) – yashhy

+0

@yashhy非常によく仲間:) –

2

技術的に言えば、あなたのコードは完全に有効ですが、いくつかのコードスタイル標準では、このようなスペースがあってはならないことが指示されています(例えば、@Bodganが引用したもの)。

実際には、YUI CompressorGoogle Closure Compilerのような多くのツールを使用してコードを圧縮すると、これらのスペースは完全に削除されます(@Bodganで引用される前後の中括弧を含む)。もちろん、有効なJSです。

42

According to Crockfordという名前機能については

関数名と括弧の間にスペースを挿入しないでください:匿名機能については

function doStuff() { 
    //stuff here 
} 

を、functionキーワードと括弧の間にスペースを挿入してください:

function() { 
    //stuff here 
} 
+20

IMHO(そしてCrockfordの)これは、2種類の機能を区別しやすくします。私はJSLintを使って一貫性と有効性があるので、自然には考えられない場所でもCrockfordのルールに固執すると思います。それらはJavascriptの事実上のコードスタイルルールです。別のものを使う本当に良い理由がない限り、私はそうしません。 (あなたはいつも別の方法でコード化しているので、Crockfordと同意しないのは本当に良い理由ではない) – rjmunro

+3

@rjmunro +1 - コメントのため。現時点では、「なぜそれが悪いのかを説明する」ページ上の唯一の場所です(条約の規則を独断的に繰り返すことなく)。 –

+1

私は両者を分けることができます。それに見合う特別なスタイルのルールを追加していますか?私はそうは思わない、FWIW、d3.jsライブラリはCrockfordの提案を破る。これは私によってはうまくいく。 –

関連する問題