10

underscore.js の isUndefined がこのように定義されているのはなぜですか?

_.isUndefined = function(obj) { return obj === void 0; };

なぜこれが機能しないのですか?

typeof obj === 'undefined'

4

3 に答える 3

14

typeof obj === 'undefined'簡単に確認できるように、開始は遅くなります。

問題は、なぜ比較するのかということです

obj === void 0 

obj === undefined

どれどれ:

void 0;void常に返される単項演算子の結果を返しますundefined(つまりvoid 1、違いはありません)

undefinedグローバル変数を指しますundefined

通常の状況では、この 2 つは同じです。ローカル変数でvoid 0シャドウすることが可能であるため、好ましいと思います:)これはばかげていますが、起こります。undefinedundefined

于 2012-11-21T07:21:43.030 に答える
3

おそらくそれが書かれている方法の方が効率的です。2つの定義をプロファイリングして見てみませんか?

于 2012-11-19T23:18:46.150 に答える
2

と書いviodた場合、構文エラーが発生します。「未定義」のつづりを と間違えまし'undeifned'たが、そのためのエラーは発生しません。したがって、考えられる理由の 1 つは、デバッグが容易になることです。:)

于 2012-11-19T23:40:29.743 に答える