कैसे एक बूलियन टॉगल करने के लिए?


412

क्या जावास्क्रिप्ट में बूलियन मान को टॉगल करने का एक बहुत आसान तरीका है ?

अब तक, एक कस्टम फ़ंक्शन लिखने के बाहर मुझे जो सबसे अच्छा मिला है, वह टर्नरी है:

bool = bool ? false : true;

जवाबों:


926
bool = !bool;

यह अधिकांश भाषाओं में सही है।


8
वास्तव में अच्छा समाधान, मैं उपयोग कर रहा था: परीक्षण = (परीक्षण == सच)? सच्चा झूठा;
एलपेरा

1
इसके लिए आरंभीकरण की जरूरत है, इसलिए क्या कोई तरीका है जो कि बिना इजाजत के है। हालांकि यह ऑब्जेक्ट विशेषताओं पर काम करेगा।
user2846569

10
@ user2846569, यदि आप बूलियन टॉगल कर रहे हैं, तो इसका मतलब है कि स्वभाव से चर पहले से ही शुरू हो चुका है। आप इसे bool = !bool || true;डिफ़ॉल्ट होने के लिए विस्तारित कर सकते हैं , मुझे लगता है।
जॉर्डन

3
@Jordan कि ReferenceError का कारण बनता है
user2846569

1
जेबी बाइनरी स्टेटमेंट के बजाय एक यूनेरी स्टेटमेंट चाहता है। शायद यह बूल हो सकता है !! या !! बूल। लेकिन अभी तक मैंने ऐसा सिंटेक्स कभी नहीं देखा है। मैं जॉर्डन से सहमत हूं। यह पहले से ही इतना छोटा है।
फंदी सुसंतो

95

यदि आपको बूलियन को एक नंबर में परिवर्तित करने का मन नहीं है (जो कि 0 या 1 है), तो आप बिटवाइज़ XOR असाइनमेंट ऑपरेटर का उपयोग कर सकते हैं । इस तरह:

bool ^= true;   //- toggle value.


यह विशेष रूप से अच्छा है यदि आप लंबे, वर्णनात्मक बूलियन नामों का उपयोग करते हैं, जैसे:

var inDynamicEditMode   = true;     // Value is: true (boolean)
inDynamicEditMode      ^= true;     // Value is: 0 (number)
inDynamicEditMode      ^= true;     // Value is: 1 (number)
inDynamicEditMode      ^= true;     // Value is: 0 (number)

प्रत्येक पंक्ति में चर को दोहराने की तुलना में स्कैन करना मेरे लिए आसान है।

यह विधि सभी (प्रमुख) ब्राउज़रों (और अधिकांश प्रोग्रामिंग भाषाओं) में काम करती है।


15
चूँकि यह किसी पूर्णांक पर वैसे भी पुन: स्थापित होता है, इसलिए इसे सरल बनाया जा सकता है:bool ^= 1
काइल म्यूलर

47
के रूप में मूल्य एक नंबर करने के casted है, तुम नहीं कर सकेंगे bool === falseया bool === trueअब। यह मौजूदा कोड को तोड़ सकता है, इसलिए सावधान रहें।
aymericbeaumet


8

आइए इसे कार्रवाई में देखते हैं:

var b = true;

console.log(b); // true

b = !b;
console.log(b); // false

b = !b;
console.log(b); // true

वैसे भी, वर्तमान में आपके पास इससे छोटा कोई रास्ता नहीं है।


2
bool === tool ? bool : tool

यदि आप मूल्य को सही रखना चाहते हैं यदि tool(एक और बूलियन) एक ही मूल्य है


2

मैं एक toggling विधि के बाद खोज कर रहा था जो वैसा ही करता है, nullया undefinedजहां यह बनना चाहिए false

यह रहा:

booly = !(booly != false)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.