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シャドウすることが可能であるため、好ましいと思います:)これはばかげていますが、起こります。undefinedundefined
おそらくそれが書かれている方法の方が効率的です。2つの定義をプロファイリングして見てみませんか?
と書いviodた場合、構文エラーが発生します。「未定義」のつづりを と間違えまし'undeifned'たが、そのためのエラーは発生しません。したがって、考えられる理由の 1 つは、デバッグが容易になることです。:)