आप सही हैं। से धीमे होने के लिए "bar" in foo
के लिए इसका कोई मतलब नहीं है।
एकमात्र कारण in
इतना तेज़ नहीं है कि इसे जेआईटी इंजीनियरों से ज्यादा ध्यान नहीं मिला है जितना अधिक आम foo.bar
वाक्यविन्यास।
विशेष रूप से अपने jsperf परीक्षण, जहां संपत्ति करता ही foo
पर सीधा संपत्ति (नहीं एक प्रोटोटाइप) के रूप में मौजूद में मामले में, यह कारण है कि 'bar' in foo
किसी भी foo.bar !== undefined
की तुलना में धीमी नहीं होना चाहिए खड़ा है। यदि कुछ भी हो, तो यह तेज़ होना चाहिए। दोनों के बीच मुख्य अंतर यह है कि in
का उत्तर संपत्ति के मूल्य की जांच किए बिना भी दिया जा सकता है!
foo.bar
मामले में, मुझे उम्मीद है कि वी 8 इंजन और स्पाइडरमोन्की इंजन दोनों ही यह पता लगाएंगे कि कोड कुछ भी उपयोगी नहीं कर रहा है (यानी, इसका कोई प्रभावशाली प्रभाव नहीं है) और इसे पूरी तरह से अनुकूलित करें।बेंचमार्क किसी भी वास्तविक काम को माप नहीं रहा है।
स्पष्ट रूप से इंजन "bar" in foo
को अनुकूलित करने के लिए पर्याप्त स्मार्ट नहीं हैं, लेकिन यह केवल समय की बात है। और प्राथमिकताओं।
स्रोत
2014-08-08 20:13:01
[इसी तरह के परिणामों के साथ समान बेंचमार्क] (http://jsperf.com/in-versus-bracket-versus-dot) – bfavaretto
मेरे परिणाम समान थे। हालांकि, "इन" के बजाय अस्तित्व की जांच करने के लिए अन्य अच्छे उम्मीदवार हैं, http://jsperf.com/dictionary-contains-key – styfle