2012-05-12 4 views
16

इस प्रकार अगर मैं एक घोषणा है:जावास्क्रिप्ट में एक चर घोषित करते समय, डिफ़ॉल्ट मान शून्य है?

var j; 

करता j==null जब तक मैं यह कुछ के बराबर सेट?

+10

'j == null'' true' होगा, लेकिन इसलिए नहीं क्योंकि 'j' 'null' है। इसके बजाए ऐसा इसलिए है क्योंकि 'j' 'अपरिभाषित' है, लेकिन' == 'ऑपरेटर टाइप जबरन करता है। '==' बराबर होने के लिए 'शून्य' और 'अपरिभाषित' मानता है। '===' ऑपरेटर सख्त है, और कोई दबाव नहीं करता है। –

उत्तर

25

नहीं, यह undefined
का डिफ़ॉल्ट मान है लेकिन अगर !j हालत उपयोग करना चाहते हैं, तो यह दोनों मूल्यों (यानी अपरिभाषित या अशक्त)

ध्यान दें कि (j==null)है के साथ काम करेंगे true, लेकिन (j===null)false ... जावास्क्रिप्ट में "झूठी" मान हैं और कभी-कभी अनपेक्षित नियम मूल्यों को परिवर्तित करने के लिए, साथ ही फैंसी === ऑपरेटर मूल्य की तुलना करने और एक ही समय में टाइप करने के लिए।

+2

वास्तव में, जे == नल सत्य का मूल्यांकन करेगा, जे === शून्य गलत होगा। (लेकिन हाँ, डिफ़ॉल्ट मान को अनिर्धारित किया गया है क्योंकि j === अपरिभाषित सत्य होगा)। – SoWeLie

+0

तो लिखने के लिए k === शून्य मूल्यांकन सही होगा, क्योंकि परिवर्तनीय के मौजूद नहीं है? मुझे लगता है कि मैं विपरीत का उपयोग कर सकता हूं, और कह सकता हूं "अगर (जे)", और वह गलत, सही का मूल्यांकन करेगा? – thisissami

+0

@ थिसिसमी नहीं, यह एक संदर्भ त्रुटि फेंक देगा। पाने के लिए मुश्किल बात यह है कि * अपरिभाषित * वास्तव में एक वैध मान है। वहां 'शून्य' और 'अपरिभाषित' दोनों हैं, वे समान हैं लेकिन अलग हैं। –

संबंधित मुद्दे