5

jslintが宣言された関数でこれを使用することについて不平を言うのはなぜですか?

function navigate() {
    var id = $(this).attr('id');
}

私に与える:

#1 Strict violation.
var id = $(this).attr('id'), // Line 18, Pos 20

それでも、jslintは次のことについて不満を述べていません。

var navigate = function () {
    var id = $(this).attr('id');
}

私は両方を同じように使用していますが、どちらもブラウザで正しく機能します。

view.on('click', navigate);

参考までに、代わりにを使用して警告を回避しましたevent.targetが、その違いを知りたいと思います。

function navigate(event) {
    var id = $(event.target).attr('id'); // no complaint
}
4

1 に答える 1

3

このリンクをご覧ください: https ://github.com/shichuan/javascript-patterns/blob/master/general-patterns/function-declarations.html

この優れたリファレンスから: http ://shichuan.github.com/javascript-patterns/

これらの理由は提供されていますが、どれほど説得力があるのか​​わかりません。

  1. 「オブジェクトとしての機能」を理解しやすくします。
  2. それは良いセミコロンの習慣を強制します。
  3. 従来、機能とスコープに関連付けられていた手荷物の多くはありません。

そのページの「名前付き関数式」の理由はもう少し説得力がありますが、それでも圧倒的ではありません。

ちなみに、これらは、ここにリンクされているように、(jQueryで有名な)John Resigから来ているようです:http: //ejohn.org/blog/javascript-as-a-first-language/

于 2012-04-13T00:38:13.460 に答える