देखो मा, कोई त्रिगुट ऑपरेटर!
निम्नलिखित कार्य करता है क्योंकि जावास्क्रिप्ट शॉर्ट सर्किट बूलियन अभिव्यक्तियां।
something == string1
तो string2
का मूल्यांकन है - string2
के बाद से एक truthy मूल्य है और अगले अभिव्यक्ति शामिल है या आपरेशन जारी रखने के लिए कोई जरूरत नहीं है। रोकें और string2
वापस करें।
यदि something !== string1
तो यह अगले ऑपरेंड को छोड़ देगा क्योंकि यदि यह गलत है, तो अगले ऑपरेंड (AND के साथ) का मूल्यांकन करने में कोई बात नहीं है। यह ओआर ऑपरेशन में "कूद" जाएगा और string1
लौटाएगा।
function toggleString(something, string1, string2) {
return something == string1 && string2 || string1;
}
something.val(toggleString(something.val(), "string1", "string2"));
आप काम किया चाहते हैं: हालांकि
function toggleValue(something, string1, string2) {
something.val(something.val() == string1 && string2 || string1);
}
toggleValue(something, "string1", "string2"); // something is a jQuery collection
अंत में, मैं त्रिगुट ऑपरेटर उपयोग करते हुए आ सकती है क्योंकि इस समाधान अन्य प्रोग्रामर से स्पष्ट नहीं हो सकता है जाएगा। यदि आप जावा या अन्य भाषाओं से आते हैं, तो आप सभी बुलियन ऑपरेटर की वजह से फ़ंक्शन को बुलियन लौटने की उम्मीद कर सकते हैं।
स्रोत
2010-09-27 20:53:52
बिल्कुल वही जो मैं ढूंढ रहा था - धन्यवाद! – Bojangles
लेकिन यह 'string1' सेट करेगा, भले ही मान 'string3' है, न केवल' string2' –
@ dev-null-dweller के लिए यह कोई समस्या नहीं है - मैं 'उत्तर' के बीच एक बटन में टेक्स्ट टॉगल कर रहा हूं और 'रद्द करें' :) – Bojangles