आपका दूसरा उदाहरण निश्चित रूप से काम नहीं करना चाहिए क्योंकि 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 सत्य है, तो इसे प्रारंभ करने से पहले बाइंडिंग के मान को एक्सेस करने का प्रयास करें या इसे शुरू करने के बाद सेट करें, यह हमेशा एक अपवाद को फेंक देगा, संचालन के सख्त मोड सेटिंग की परवाह किए बिना जो कि बाध्यकारी है। एस एक वैकल्पिक पैरामीटर है जो झूठे को परिभाषित करता है।