2011-08-21 9 views
8

क्यों मैं ऐसा नहीं कर सकते:एकाधिक कार्य के अंदर अगर बयान

 
var fooElement, barElements; 
if(fooElement = document.getElementById('foo') && barElements = fooElement.getElementsByTagName('bar') && barElements[0] && barElements[0].onclick) 
{ 
    console.log(barElements[0].onclick); 
} 

यह या तो काम नहीं करेगा:

 
var foo, bar; 
if(foo = true && bar = true) 
{ 
    console.log('yay'); 
} 

उत्तर

10

प्रयास करें इस (यह आप एक सुराग देना चाहिए):

var foo, bar; 
if((foo = true) && (bar = true)) 
{ 
    console.log('yay'); 
} 
+1

डिफ़ॉल्ट रूप से पूर्वता काम पिछले डाल करने के लिए, हो रहा है तो सभी को है कि && कथन पहले गणना की जाती है। यह देखना आसान है कि जब आप गलती से == के बजाय = = का उपयोग करते हैं, और यदि आप = और && के संयोजनों के अधिक सामान्य उपयोग पर विचार करते हैं तो यह समझ में आता है। –

2

चेक ऑपरेटर पूर्वता, का प्रयोग करें

if((foo = true) && (bar = true)) 
{ 
    alert(foo); 
} 

युपीडी: भूल जाते हैं कि निम्न कोड को सही पर bar सेट नहीं करेगा क्योंकि & & Short Circuit ऑपरेटर

if((foo = false) && (bar = true)) 
{ 
    alert(foo); 
} 

Sample

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

  • कोई संबंधित समस्या नहीं^_^