で=== + obj.lengthは、誰かが、なぜ彼らはそれを使うのですか、説明できますか?obj.length多くの場所でunderscore.jsソースでJavaScript
答えて
if (typeof obj.length == 'number')
の別の書き方です。なぜ彼らはそれをそうするのか、それは誰の推測でもあります。おそらく読みやすさを犠牲にして巧みにしようとしています。それはminifiers(YUI Compressor、Closure Compiler、UglifyJS、など)によって、より圧縮することができるようになるかもしれませんが、残念ながら...
、これらの日あまりにも珍しくどちらではありません。 (typeof a.length=='number')
(a.length===+a.length)
これを実行すると、各インスタンスが5バイト節約されます。
obj
のlength
のプロパティが数値であるかどうかをテストします。
unary +
operatorは、そのオペランドを数値に変換し、length
の結果とstrict equality operatorは、タイプ強制を実行せずに結果を比較します。
したがって、obj.length
が実際の数(数字に変換できる文字列など)でない場合、式はtrue
になります。
+obj.length
obj.length
に番号を付けます。 これはobj.length
が数字かどうかをテストすることだと思います。
obj.lengthが数字の場合の主な理由は、Objectのobj型と[object Array]を区別することです(StringオブジェクトとFunctionオブジェクトでも機能します)。 [オブジェクトオブジェクト]には長さプロパティはありません。
ので
obj = {a:1, b:2}; //obj.length = undefined
obj.length === +obj.length
undefined === NaN //false - you know that your obj has type Object
// (or some other object, but not Array, !String and !Function)
// so, you need to determine size of the obj in some way
// or use for in loop to iterate over your obj
よろしく
PSの場合:IMOそれはいくつかPERFの犠牲に質問
このテストで「else」節が必要な理由を教えてくれてありがとう、オブジェクトキー/項目をループする古典的な "for"の代わりにループ)。 –
- 1. android Handler.postDelayed多くの場所で使用
- 2. macdeployqtソースの場所
- 3. 場所htmlでjavascript?
- 4. openjdkでソースを見つける場所
- 5. 場合underscore.js
- 6. のJavaScript/Underscore.js - 動的
- 7. テスト自動化ソースの場所
- 8. Ruby on rails3 javascriptコードを置く場所
- 9. JavascriptのURL場所
- 10. javascriptファイルの場所
- 11. 場所の近くの場所で表示Augmented reality Android
- 12. Ruby 1.8.7でモジュールのソースの場所を見つける
- 13. 多くの住所のジオコーディング
- 14. 多くのユーザーの最新の場所を取得
- 15. 多くのテーブルのHiveメタデータの場所を更新する
- 16. 太陽のウェブサイトなど、Webの多くの場所ではTreeSetの
- 17. cvsエディタが同じプロジェクトの多くの場所で動作しない
- 18. ビジュアルスタジオの多くのプロジェクトで必要なファイルを定義する場所は?
- 19. 私はScalaのコードに多くの場所で見てきたスカラ
- 20. Sass/Compassは多くの場所にコンパイルします
- 21. 多くの場所からログを集中管理
- 22. JavascriptのHTML5の場所ボタン
- 23. jsfのjavascriptの場所オブジェクト
- 24. javascriptを使用して外部ファイルのソース(場所)を取得する
- 25. /Elseステートメントの場所 - Javascript
- 26. Scripting.FileSystemObjectの場所(JavaScriptから)
- 27. Mozilla Core Javascriptモジュールの場所
- 28. JavaScriptと要素の場所
- 29. GeoFire近くにユーザーが見つからない場合、ソースの場所に別のマーカーを置く
- 30. Underscore.jsの条件文の場合
保存5バイトものの(「なぜ、彼らはそれを使うのですか」の第二部に答えますとにかくクロムの中で)http://jsperf.com/obj-length-vs-typeof-number – j03m