आपका दूसरा उदाहरण निश्चित रूप से काम नहीं करना चाहिए क्योंकि i
एक बार घोषित किया गया है और प्रत्येक पुनरावृत्ति पर नहीं यह केवल एक फ़ंक्शन है कि लूप की श्रेणी कैसे काम करती है।
आप इसे एक नियमित ब्राउज़र में आज़मा सकते हैं:
for (var i = 0, otherVar = ""; i < [1,2,3,4].length; i += 1){
console.log(otherVar)
otherVar = "If otherVar was initialized on each iteration, then you would never read me.";
}
यह ऐसी स्थिति const
नहीं है जो for
छोरों में पूरी तरह से अस्वीकृत है । केवल for
यह कि कास्ट को संशोधित करेगा।
ये मान्य हैं:
for(const i = 0;;){ break }
for(const i = 0; i < 10;){ break; }
ये अमान्य हैं:
for(const i = 0;;){ ++i; break; }
for(const i = 0;;++i){ if(i > 0) break; }
मुझे यकीन नहीं है कि ES2015 युक्ति पढ़ने के बाद फ़ायरफ़ॉक्स एक सिंटेक्सएयर क्यों देता है (हालाँकि मुझे यकीन है कि मोज़िला में चतुर लोग सही हैं), ऐसा लगता है कि यह अपवाद को बढ़ाने वाला है:
एक पर्यावरण रिकॉर्ड में एक नया लेकिन बिना इजाजत के अपरिवर्तनीय बंधन बनाएं। स्ट्रिंग मान N बाउंड नाम का पाठ है। यदि S सत्य है, तो इसे प्रारंभ करने से पहले बाइंडिंग के मान को एक्सेस करने का प्रयास करें या इसे शुरू करने के बाद सेट करें, यह हमेशा एक अपवाद को फेंक देगा, संचालन के सख्त मोड सेटिंग की परवाह किए बिना जो कि बाध्यकारी है। एस एक वैकल्पिक पैरामीटर है जो झूठे को परिभाषित करता है।