underscore.js の isUndefined がこのように定義されているのはなぜですか?
_.isUndefined = function(obj) {
return obj === void 0;
};
なぜこれが機能しないのですか?
typeof obj === 'undefined'
underscore.js の isUndefined がこのように定義されているのはなぜですか?
_.isUndefined = function(obj) {
return obj === void 0;
};
なぜこれが機能しないのですか?
typeof obj === 'undefined'
typeof obj === 'undefined'
簡単に確認できるように、開始は遅くなります。
問題は、なぜ比較するのかということです
obj === void 0
対
obj === undefined
どれどれ:
void 0;
void
常に返される単項演算子の結果を返しますundefined
(つまりvoid 1
、違いはありません)
undefined
グローバル変数を指しますundefined
。
通常の状況では、この 2 つは同じです。ローカル変数でvoid 0
シャドウすることが可能であるため、好ましいと思います:)これはばかげていますが、起こります。undefined
undefined
おそらくそれが書かれている方法の方が効率的です。2つの定義をプロファイリングして見てみませんか?
と書いviod
た場合、構文エラーが発生します。「未定義」のつづりを と間違えまし'undeifned'
たが、そのためのエラーは発生しません。したがって、考えられる理由の 1 つは、デバッグが容易になることです。:)