2010-08-16 11 views
13

यदि मैं किसी शर्त के साथ बयान देता हूं (x < y) या (x == y)। लेकिन ऐसे मामलों में जहां कोई ऑपरेटर नहीं है, तो अगर कथन कथन वास्तव में जांचता है? यानी नीचे दिए गए उदाहरण में (window.XMLHttpRequest) ... क्या स्थिति है?जावास्क्रिप्ट यदि कोई ऑपरेटर के साथ कथन की स्थिति है? यह क्या करता है?

धन्यवाद।

if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 

उत्तर

0

के रूप में मैं समझता हूँ, यह सही या गलत के लिए हमेशा की तरह की जांच से चर कन्वर्ट करने के लिए बूलियन (यदि बयान के अंदर) की कोशिश करेंगे, और। इस विशेष मामले में, यह जांच करेगा, अगर विंडो का XMLHttpRequest तत्व मौजूद है। यदि कोई XMLHttpRequest नहीं है - यह पूर्ण होगा, और फिर NULL को गलत में परिवर्तित कर दिया जाएगा। पीएस मैं आपको कुछ अच्छा जावास्क्रिप्ट संदर्भ खोजने की सलाह देता हूं।

10

जब तक कोष्ठकों के अंदर अभिव्यक्ति की तुलना में false, null, 0, "" या undefined अलावा कुछ देता है के रूप में ... if बयान में ब्लॉक :-) निष्पादित किया जाएगा

वास्तव में के सभी निम्नलिखित काम करेगा:

<script> 
    if (3) { 
    alert('3'); 
    } 
    if ({}) { 
    alert('{}'); 
    } 
    if(window) { 
    alert('window!'); 
    } 
    if(true) { 
    alert('true!'); 
    } 
    if('hell yeah') { 
    alert('hell yeah!'); 
    } 

</script> 
+0

spec के लिए यहां देखें: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-toboolean – phi

1

यह जाँच करता है कि वहाँ XMLHttpRequest जिसका "ट्रू बुलाया window पर एक संपत्ति मौजूद है चतुरता "सच है। जावास्क्रिप्ट विभिन्न मानों को सत्य के रूप में व्याख्या करता है: सत्य, कोई गैर-0 संख्यात्मक मान, कोई गैर-शून्य ऑब्जेक्ट संदर्भ, या (मुझे लगता है) कोई गैर-खाली स्ट्रिंग।

इस मामले में, कोड परीक्षण कर रहा है कि ब्राउज़र XMLHttpRequest प्रॉपर्टी का समर्थन करता है, जो किसी ऑब्जेक्ट के लिए कन्स्ट्रक्टर फ़ंक्शन है जो ऊपर उल्लिखित ब्राउज़र में सर्वर के लिए एसिंक्रोनस अनुरोध भेजता है। यदि ब्राउजर इस फ़ंक्शन को परिभाषित करता है, तो यदि कथन कथन का मूल्यांकन करेगा।

0

कुछ भाषाओं में भविष्यवाणी को वास्तव में एक बूलियन वापस करना होगा। जावास्क्रिप्ट में यह मामला नहीं है।

तरह 0 या गलत (वहाँ दूसरों हो सकता है) झूठे हैं कुछ मामले, बाकी सच

3

है यह

if (window.XMLHttpRequest != false) { 
    xmlhttp=new XMLHttpRequest(); 
} 

कर के रूप में ठीक उसी है आप किसी भी अन्य falsy मूल्य के साथ झूठी की जगह सकता है (0, शून्य, "") और यह टाइप जबरदस्ती के कारण भी काम करेगा।

हालांकि, कि अनावश्यक है, बस (स्यूडोकोड)

if (window.XmlHttpRequest exists) { 
    use window.XmlHttpRequuest 
} 
0

यह जाँच करता है XMLHttpRequest बुलाया खिड़की पर एक संपत्ति वहाँ मौजूद है या नहीं के रूप में यह के बारे में सोच।

यदि वहां है, तो यह नीचे दिए गए ब्रैकेट में कोड निष्पादित करेगा।

अन्यथा, यह झूठी वापसी करेगा और कोड ब्लॉक को छोड़ देगा।