पहला संस्करण:
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