के लिए ... एक वस्तु, मनमाना क्रम में की गणनीय सम्पत्ति के ऊपर बयान दोहराता में।
अधिक सटीक होने के लिए, इसमें प्रोटोटाइप श्रृंखला में भी समेकित गुण शामिल हैं।
और प्रत्येक ऑब्जेक्ट का समान व्यवहार किया जाता है। यह आसान है, यह उलझन में है, जब बहुत से लोगों को एरे पर इस्तेमाल किया जाता है तो इससे नफरत होती है।
for..of
आंतरिक रूप से एक प्रतीक का उपयोग करता है। [Symbol.iterator]
के साथ किसी भी ऑब्जेक्ट को for..of
पर पुनरावृत्त किया जा सकता है, लेकिन को फिर से कथन के अर्थशास्त्र के बजाय प्रतीक में परिभाषित किया गया है और प्रतीक में किस क्रम में परिभाषित किया गया है (आलसी iterators को अनुमति देता है जहां गुण प्रारंभ में ज्ञात नहीं हैं) ।
सरणी के मामले में, इटरेटर शून्य और सरणी के length-1
के बीच प्रत्येक संपत्ति के माध्यम से जाता है, यहां तक कि उन गुणों को भी अपरिभाषित किया जाता है और for..in
द्वारा नहीं उठाया जाएगा। लेकिन यह अन्य गुणों को पूरी तरह से अनदेखा करता है, वैसे ही ऐरे .toString() समय की शुरुआत के बाद से, और ऐरे .forEach() और ES5 से इसके मित्र। यह सरणी पुनरावृत्ति को सुसंगत बनाता है।
सरणी पर इटरेशन (प्रत्येक के लिए, 'के लिए 'के लिए उपयोग) केवल शून्य और' लंबाई -1' के बीच अपनी गुणों (यहां तक कि अपरिभाषित) को कवर करता है। 'for..in' अलग है और किसी भी चीज की समृद्ध गुणों पर पुनरावृत्ति करता है। – Touffy
आपकी त्वरित प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। अब, मुझे नहीं पता कि आपका जवाब कैसे स्वीकार किया जाए :-) –
क्षमा करें, कुछ और अधिक विस्तृत लिखें, मुझे कुछ मिनट दें :) – Touffy