गुंजाइश प्रयोगों के लिए ब्राउज़र कंसोल का उपयोग न करें। विभिन्न ब्राउज़र कंसोल आपके कोड को विभिन्न तरीकों से चलाते हैं।
आपको लगता है कि कोड एक सामान्य वातावरण में उद्धृत बिल्कुल के रूप में चलाते हैं, सही बात यह है कि आप पहली बार console.log(b)
लाइन से एक ReferenceError
मिलेगा:
function a() {
b = 14;
}
console.log(b); // ReferenceError
a();
console.log(b);
भी ढीला मोड में
, पढ़ने का प्रयास एक अविकसित पहचानकर्ता का मूल्य ReferenceError
है।
अगर हम कि प्रारंभिक console.log
निकालने के लिए, हम एक क्षेत्र ढीला बनाम सख्त मोड पर निर्भर करता है कि में होगी:
// In loose mode
function a() {
b = 14;
}
a();
console.log(b); // 14
कि है अंतर्निहित वैश्विक की हॉरर; ढीले मोड में, एक अविकसित पहचानकर्ता को असाइन करना एक वैश्विक चर बनाता है।
बनाम।
// In strict mode
"use strict";
function a() {
b = 14; // ReferenceError
}
a();
console.log(b);
... यह कैसे होना चाहिए।
मेरी कमजोर थोड़ा ब्लॉग पर एक पोस्ट है कि।
स्रोत
2016-11-05 11:34:22
'बी' आपके कोड में वैश्विक नहीं है। – melancia
@MelanciaUK: यह ढीला मोड में है। सख्त मोड में, यह एक 'संदर्भ त्रुटि' है। –
बस इसे फायरबग में चलाया और मुझे एक संदर्भ त्रुटि दी। शुरुआत में 'var b;' जोड़ने के बाद मैं एक अनिर्धारित और 14 प्राप्त करने में कामयाब रहा। –