पहला संस्करण:
for (var x in set) {
...
}
स्थानीय चर घोषित करता है x। दूसरा संस्करण:
for (x in set) {
...
}
नहीं करता।
यदि xपहले से ही एक स्थानीय चर (यानी आपके पास आपके वर्तमान क्षेत्र (यानी वर्तमान फ़ंक्शन) में कहीं var x;या var x = ...;पहले है) तो वे समतुल्य होंगे। यदि xपहले से ही एक स्थानीय चर नहीं है, तो दूसरे का उपयोग करने से एक वैश्विक चर घोषित होगा x। इस कोड पर विचार करें:
var obj1 = {hey: 10, there: 15};
var obj2 = {heli: 99, copter: 10};
function loop1() {
for (x in obj1) alert(x);
}
function loop2() {
for (x in obj2) {
loop1();
alert(x);
}
}
loop2();
जब आप सूचना में यह उम्मीद कर सकते हैं hey, there, heli, hey, there, copter, लेकिन जब से xएक और एक ही यह चेतावनी देगा है hey, there, there, hey, there, there। आप ऐसा नहीं चाहते हैं! उपयोगvar xअपने forछोरों में ।
इसे बंद करने के लिए: यदि forलूप वैश्विक दायरे में है (यानी एक फ़ंक्शन में नहीं), तो स्थानीय स्कोप ( xयदि आप उपयोग करते हैं तो स्कोप घोषित किया गया है var x) वैसा ही है जैसा कि ग्लोबल स्कोप (स्कोप xमें निहित है) यदि आप xएक संस्करण के बिना उपयोग करते हैं ), तो दो संस्करण समान होंगे।
varइटरेटर घोषित करने के लिए उपयोग नहीं किया गयाi:Uncaught ReferenceError: i is not defined। इसलिए मैं इसे अभी से उपयोग करूंगा: / webpack "ग्लोबल" वैरिएबल को अजीब तरह से मानता है, अधिक देखने के लिए: stackoverflow.com/a/40416826