5

このコードをjslintで実行すると

(function () { return "helloooo"; }).call();

次のエラーが表示されます。

予期しない「.」。

何故ですか?

関数を変数に割り当ててから呼び出すと、エラーは発生しません。

これ:

var cb = function () { return "helloooo"; };
cb.call();

エラーを返しません。

しかし、そもそもなぜエラーが発生するのか知りたいです。最初の例で破るダグラス・クロックフォードの神聖なルールは何ですか?

4

1 に答える 1

1

それは悪いことではありません。JSLint は意見が分かれており、Crockford は、括弧内で関数式を使用している場合は、そのメソッドを直接呼び出すか、変数に割り当てる必要があると考えています。価値そのものとして。

この場合、Crockford 氏は次のことを推奨しています。

(function () { return "helloooo"; }())
                                   ^^
                          Notice how is the function being called

.したがって、 JSLintは閉じ括弧の後に何も期待していませんcall()

Javascript プログラミング言語のコード規則 (Crockford 著)を参照して、これについて詳しく学んでください。具体的には、関数に関するセクションを探してください。

于 2013-10-15T10:46:35.077 に答える