2010-11-12 8 views
16

मैं JSLint उपयोग कर रहा हूँ मेरी जावास्क्रिप्ट सुनिश्चित करने के लिए "सख्त" है और मैं निम्नलिखित त्रुटि हो रही है:जावास्क्रिप्ट: त्रुटि - "एक असाइनमेंट या फ़ंक्शन कॉल की अपेक्षा की गई और इसके बजाय एक अभिव्यक्ति देखी गई"?

Expected an assignment or function call and instead saw an expression

निम्नलिखित कोड पर:

(my_var > 0) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name); 

कोई भी विचार कारण है कि मैं इस तरह के हो रही है एक त्रुटि? इसके अलावा, मैं उपरोक्त कोड में देखा गया jQuery का उपयोग कर रहा हूं, अगर इससे कोई फर्क पड़ता है।

उत्तर

14

मेरा अनुमान है कि JSLint नाखुश है क्योंकि आप टर्नरी ऑपरेटर का उपयोग कर रहे हैं, और आप मूल्य के साथ कुछ भी नहीं कर रहे हैं। इसे समकक्ष में दोबारा प्रतिक्रिया देना:

if (my_var > 0) { 
    $("#abc").html(my_array.join('')); 
} else { 
    $("#abc").html('<h2>Hello ' + persons_name); 
} 

त्रुटि को खत्म कर देगा। किसी कारण से आप वास्तव में त्रिगुट ऑपरेटर, "सही" जिस तरह से उपयोग करने के लिए उपयोग करने के लिए संलग्न कर रहे हैं यह होगा:

$("#abc").html((my_var > 0) ? my_array.join('') : '<h2>Hello ' + persons_name); 
+0

मेरी इच्छा है कि बिटवाई प्रकार के रूप में bitwise && का उपयोग करने के लिए आराम विकल्प रहे – SimplGy

8

मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि टर्नरी ऑपरेटर अभिव्यक्ति का मूल्यांकन करता है और एक मान देता है जिसे आवंटित होने की उम्मीद है। उदाहरण के लिए:

var test = (my_var > 0) ? true : false; 

हालांकि, आप इसे नियमित रूप से/फिर/अन्य कथन के रूप में उपयोग कर रहे हैं। जबकि टर्नरी ऑपरेटर प्रदर्शन करता है अगर/फिर/अन्यथा, यह पारंपरिक रूप से असाइनेंट में उपयोग किया जाता है।

संपादित करें: एक परिशिष्ट के रूप में: क्या यह कथन आपको समझ में आएगा?

var foo = 1; 
(my_var > 0) ? true : false; 
console.log('hello world'); 
2

आप एक पंक्ति में एक अभिव्यक्ति (एक अभिव्यक्ति त्रिगुट ऑपरेटर का उपयोग सटीक होना करने के लिए) का उपयोग कर रहे हैं: अपने लाइन एक अभिव्यक्ति की विशिष्ट मिलकर बना है।

इसे कई भाषाओं में खराब प्रोग्रामिंग अभ्यास माना जाता है, और इस लाइन को और अधिक स्पष्ट करने के लिए if कथन का उपयोग करके फिर से लिखा जा सकता है।

0

बस किसी कारण से यह एक खोजने के बिना एक ही क्यू पूछा ...

टर्नरी एक ऐसा मूल्य देता है जिसका उपयोग नहीं किया जा रहा है, इसलिए आप मूल्य का उपयोग न करके टर्नरी संरचना का दुरुपयोग कर रहे हैं (भले ही फ़ंक्शन कॉल को इरादे के रूप में बनाया जा रहा हो)।

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