2012-05-14 14 views
5

मैं AJAX कॉल में एक पूर्ण फ़ंक्शन को संसाधित करने का प्रयास कर रहा हूं। यदि मान अपरिभाषित है, तो मैं एक var को एक खाली स्ट्रिंग के रूप में डालना चाहता हूं। अन्यथा, मैं मान को स्ट्रिंग सरणी में कैप्चर करना चाहता हूं।अपरिभाषित के साथ परेशानी हो रही है! == अपरिभाषित

समस्या तब भी जब प्रश्न में चर का मान प्रवेश करने मैं, अगर बयान दर्ज कर रहा के रूप में अनिर्धारित दिखाता है। मुझे यहां क्या समझ नहीं आ रहा है?

completefunc: function (xData, Status) { 
     $(xData.responseXML).SPFilterNode("z:row").each(function() { 
     if(typeof $(this).attr("ows_Products") !== undefined) { 
      console.log($(this).attr("ows_Products")); 
      arr = $(this).attr("ows_Products").split(','); 
     } 
     else { 
      arr = ""; 
     } 
     }); 
    } 
+1

है यह पिछले प्रश्न पर एक नज़र: http://stackoverflow.com/questions/776950/javascript -undefined-undefined –

+0

@web_bod जो == से === की तुलना करने के मामले में अधिक दिखता है, जिसका अर्थ शून्य == अपरिभाषित = सत्य है, जबकि शून्य === अपरिभाषित = झूठा – Wesley

उत्तर

16

typeof एक स्ट्रिंग मान देता है, तो आप एक स्ट्रिंग के रूप "undefined" के साथ तुलना करने की आवश्यकता होगी। उदाहरण के लिए,

if(typeof $(this).attr("ows_Products") !== "undefined") { ... } 

संपादित करें - अधिक जानकारी के:

आप MDN page for typeof की जाँच, तो आप इस देखेंगे:

typeof ऑपरेटर एक स्ट्रिंग के प्रकार का संकेत देता है अनियमित ऑपरेंड।

यह Type ही (जो जावास्क्रिप्ट में शायद String, Array, आदि जैसे एक निर्माता समारोह लौटने की तरह कुछ हो जाएगा) लौटने से बहुत अलग है। इसलिए, जब typeof उपयोग कर, आप हमेशा की तरह, "string", "undefined", "object" तरह तार की तुलना हो जाएगा आदि

+0

आह हाँ। कभी-कभी छोटी चीजें होती हैं। – Wesley

+5

समाधान की सादगी आम तौर पर इस समस्या पर घूरने में कितनी देर बिताती है इसके विपरीत आनुपातिक है :) – jmar777

+0

+1, बस उस टिप्पणी के कारण !!! – gdoron

0
if($(this).attr("own_Products")){ 
     arr = $(this).attr("ows_Products").split(','); 
}else{ 
     arr="" 
} 
संबंधित मुद्दे