,:
जब undefined
वास्तव में अपरिभाषित नहीं है, उदाहरण के लिए इस कोड को ले लो। एक असफलता है।अन्य कोड गलती से
undefined = something;
console.log(undefined); // will output 'something'
की तरह कुछ करना और जावास्क्रिप्ट में मान्य thats सकता है क्योंकि (जे एस इंजन इस्तेमाल किया जा रहा है, तो लागू नहीं किया ECMAScript 5 विनिर्देश, ECMAScript में 5 कल्पना undefined
गैर non-writable
, MDN DOC है),
MDN New_in_JavaScript 1.8.5 (ECMA 5) पृष्ठ
से उद्धरण
परिवर्तन वैश्विक वस्तुओं के लिए
वैश्विक वस्तुओं केवल
NaN, इन्फिनिटी, और अपरिभाषित वैश्विक वस्तुओं किए गए हैं केवल पढ़ा है, प्रति ECMAScript 5 विनिर्देश पढ़ बना दिया।
और ES5 Annotated Spec
से Guthub
में
ES5 spec Section
x15.1.1.3
15.1.1.3 अपरिभाषित
अपरिभाषित का मूल्य अपरिभाषित है (8.1 देखें)।
इस संपत्ति में विशेषताएँ {[[लिखने योग्य]]: झूठी, [[गणना]]: झूठी, [[कॉन्फ़िगर करने योग्य]]: झूठी}।
यहां तक कि अगर global undefined
को लिखने योग्य आप एक स्थानीय चर undefined
नामित करने और अपने कोड गड़बड़ कर सकते हैं (मुख्य रूप से undefined
के साथ तुलना) हो सकता है नहीं है। लेकिन यह आपकी ज़िम्मेदारी है। आप की तरह
(function(){
console.log('Second Case: ');
var undefined = 'Something';
console.log(undefined); // Will log `something`
var a ; // a is undefined
console.log(a === undefined); // false, as undefined is changed
// you might expect a === undefined will return true, but as
// `undefined` is changed it will return false.
console.log(a); // undefined
})();
डेमो कोड हो सकता है:http://jsfiddle.net/joycse06/V4DKN/
हालांकि undefined
अगर लिखने योग्य है तो ऊपर काम में बाधा हो सकती है कई comparison
undefined
के रूप में कोड की है कि रेखा के बाद undefined
के साथ बनाया undefined
अब और नहीं है। अब कुछ मूल्य है।
तो के रूप में वे की तरह
(window) // one argument only
कि अज्ञात फ़ंक्शन कॉल और प्राप्त
(window, undefined) // only window is passed when calling the function
// Second argument is not passed means it's undefined
// so undefined is restored to undefined inside that function
// and no global accidental assignments can hamper jQuery's
// code using 'undefined' now
कि बंद undefined
अंदर इसका मतलब है कि undefined
को पुनर्स्थापित किया जाता है, के रूप में यह इस प्रकार हासिल करने के लिए किसी भी मान प्रदान किया नहीं किया गया है कर रहे हैं उस अज्ञात फ़ंक्शन के अंदर undefined
का उपयोग करें।
इस http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/
पर एक बहुत अच्छा विस्तृत लेख मैं चीजों को स्पष्ट
क्या अपरिभाषित है बनाने के लिए उपरोक्त लेख लिंक से कुछ लाइनों के हवाले कर रहा हूँ?
जावास्क्रिप्ट में अनिर्धारित (प्रकार), अपरिभाषित (मान) और अपरिभाषित (चर) है।
अपरिभाषित (प्रकार) एक अंतर्निहित जावास्क्रिप्ट प्रकार है।
अपरिभाषित (मूल्य) एक आदिम है और यह अनिर्धारित प्रकार का एकमात्र मूल्य है।
कोई भी संपत्ति जिसे मूल्य निर्दिष्ट नहीं किया गया है, अपरिभाषित मान मानता है। (ईसीएमए 4.3.9 और 4.3.10)।
रिटर्न स्टेटमेंट के बिना कोई फ़ंक्शन, या खाली रिटर्न स्टेटमेंट वाला फ़ंक्शन अपरिभाषित हो जाता है। एक अनुपयुक्त फ़ंक्शन तर्क का मान अपरिभाषित है।
var a;
typeof a; //"undefined"
window.b;
typeof window.b; //"undefined"
var c = (function() {})();
typeof c; //"undefined"
var d = (function(e) {return e})();
typeof d; //"undefined"
अपरिभाषित (चर) एक वैश्विक संपत्ति जिसका प्रारंभिक मूल्य अपरिभाषित है (मान), के बाद से अपने एक वैश्विक संपत्ति हम भी एक चर के रूप में भी पहुंच सकते हैं। स्थिरता के लिए मैं हमेशा इस आलेख में एक चर को कॉल करने जा रहा हूं।
typeof undefined; //"undefined"
var f = 2;
f = undefined; //re-assigning to undefined (variable)
typeof f; //"undefined"
ECMA 3 के रूप में, अपने मूल्य पर पुन: सौंपा जा सकता है:
undefined = "washing machine"; //assign a string to undefined (variable)
typeof undefined //"string"
f = undefined;
typeof f; //"string"
f; //"washing machine"
अनावश्यक कहने के लिए फिर से बताए अपरिभाषित चर के लिए मान बहुत बुरा व्यवहार है, और वास्तव में अपने ECMA द्वारा अनुमति नहीं 5.
संबंधित: http://stackoverflow.com/q/5020479/ – CMS
संबंधित: [पुराने ब्राउज़र में window.undefined mutable क्यों है?] (Https://stackoverflow.com/q/29742135/1048572) – Bergi