jQuery のソース コードには、一見役に立たない関数が 2 つあります (v1.9.1 の場合、2702 行目と 2706 行目です)。
function returnTrue() {
return true;
}
function returnFalse() {
return false;
}
どちらも jQuery 内で頻繁に呼び出されます。true
関数呼び出しを単純にブール値またはで置き換えない理由はありfalse
ますか?
jQuery のソース コードには、一見役に立たない関数が 2 つあります (v1.9.1 の場合、2702 行目と 2706 行目です)。
function returnTrue() {
return true;
}
function returnFalse() {
return false;
}
どちらも jQuery 内で頻繁に呼び出されます。true
関数呼び出しを単純にブール値またはで置き換えない理由はありfalse
ますか?
オブジェクトのプロパティ、関数の引数などでfunction
が必要な場合は、function
ではなくを指定する必要がありますboolean
。
たとえば、バニラ JavaScript では次のようになります。
var a = document.createElement("a");
a.href = "http://www.google.com/";
/*
* see https://developer.mozilla.org/en-US/docs/DOM/element.onclick
* element.onclick = functionRef;
* where functionRef is a function - often a name of a function declared
* elsewhere or a function expression.
*/
a.onclick = true; // wrong
a.onclick = returnTrue; // correct
a.onclick = function() { return true; }; // correct
また、次のように書いています。
someProperty: returnTrue,
書くよりも便利です:
someProperty: function(){
return true;
},
特に頻繁に呼び出されるためです。
次のように使用されました。
stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
}
ここisImmediatePropagationStopped
にクエリメソッドがあります。このように使用event.isImmediatePropagationStopped()
もちろん、次のようなインスタンス メソッドを定義できます。
event.prototyoe.isImmediatePropagationStopped = function() { return this._isImmediatePropagationStopped };
stopImmediatePropagation: function() {
this._isImmediatePropagationStopped = true; //or false at other place.
this.stopPropagation();
}
_isImmediatePropagationStopped
ただし、ステータスを保存するには、新しいインスタンス プロパティを導入する必要があります。
_isImmediatePropagationStopped
このトリックを使用すると、ここで true/false ステータスを保持するために、_isDefaultPrevented
などのインスタンス プロパティの束を切り取ることができます。
私の意見では、これは単なるコード スタイルの問題であり、正しいか間違っているかではありません。
PS: 、 などのイベントのクエリ メソッドは、isDefaultPrevented
DOMイベント レベル 3 sepc で定義されています。isPropagationStopped
isImmediatePropagationStopped