Compare Revisions

Logical Operators

Change Revisions

Revision 418395:

Revision 418395 by Sheppy on

Revision 498675:

Revision 498675 by fusionchess on

Title:
Logical Operators
Logical Operators
Slug:
Web/JavaScript/Reference/Operators/Logical_Operators
Web/JavaScript/Reference/Operators/Logical_Operators
Content:

Revision 418395
Revision 498675
n8       n
9    </p>
10    <h3 id="Summary" name="Summary">
11      Summary
12    </h3>
13    <p>
14      Logical operators are typically used with Boolean (logical)8      Logical operators are typically used with <a href="/en-US/d
> values; when they are, they return a Boolean value. However, the>ocs/Web/JavaScript/Reference/Global_Objects/Boolean">Boolean</a> 
> <code>&amp;&amp;</code> and <code>||</code> operators actually r>(logical) values; when they are, they return a Boolean value. How
>eturn the value of one of the specified operands, so if these ope>ever, the <code>&amp;&amp;</code> and <code>||</code> operators a
>rators are used with non-Boolean values, they may return a non-Bo>ctually return the value of one of the specified operands, so if 
>olean value.>these operators are used with non-Boolean values, they may return
 > a non-Boolean value.
n98    <h4 id="Short-Circuit_Evaluation" name="Short-Circuit_Evaluatn92    <h2 id="Short-Circuit_Evaluation" name="Short-Circuit_Evaluat
>ion">>ion">
n100    </h4>n94    </h2>
nn124    <h2 id="Examples" name="Examples">
125      Examples
126    </h2>
127    <h3 id="Logical_AND_.28&amp;&amp;.29" name="Logical_AND_.28&a
 >mp;&amp;.29">
128      Logical AND (<code>&amp;&amp;</code>)
129    </h3>
130    <p>
131      The following code shows examples of the <code>&amp;&amp;</
 >code> (logical AND) operator.
132    </p>
133    <pre>
134a1 = true &amp;&amp; true       // t &amp;&amp; t returns true
135a2 = true &amp;&amp; false      // t &amp;&amp; f returns false
136a3 = false &amp;&amp; true      // f &amp;&amp; t returns false
137a4 = false &amp;&amp; (3 == 4)  // f &amp;&amp; f returns false
138a5 = "Cat" &amp;&amp; "Dog"     // t &amp;&amp; t returns Dog
139a6 = false &amp;&amp; "Cat"     // f &amp;&amp; t returns false
140a7 = "Cat" &amp;&amp; false     // t &amp;&amp; f returns false
141</pre>
142    <h3 id="Logical_OR_.28||.29" name="Logical_OR_.28||.29">
143      Logical OR (<code>||</code>)
144    </h3>
145    <p>
146      The following code shows examples of the <code>||</code> (l
 >ogical OR) operator.
147    </p>
148    <pre>
149o1 = true || true       // t || t returns true
150o2 = false || true      // f || t returns true
151o3 = true || false      // t || f returns true
152o4 = false || (3 == 4)  // f || f returns false
153o5 = "Cat" || "Dog"     // t || t returns Cat
154o6 = false || "Cat"     // f || t returns Cat
155o7 = "Cat" || false     // t || f returns Cat
156</pre>
157    <h3 id="Logical_NOT_.28.21.29" name="Logical_NOT_.28.21.29">
158      Logical NOT (<code>!</code>)
159    </h3>
160    <p>
161      The following code shows examples of the <code>!</code> (lo
 >gical NOT) operator.
162    </p>
163    <pre>
164n1 = !true              // !t returns false
165n2 = !false             // !f returns true
166n3 = !"Cat"             // !t returns false
167</pre>
168    <h3>
169      Conversion rules
170    </h3>
171    <h4>
172      Converting AND to OR
173    </h4>
174    <p>
175      the following operation involving Booleans:
176    </p>
177    <pre class="brush: js">
178bCondition1 &amp;&amp; bCondition2
179</pre>
180    <p>
181      is always equal to:
182    </p>
183    <pre class="brush: js">
184!(!bCondition1 || !bCondition2)
185</pre>
186    <h4>
187      Converting OR to AND
188    </h4>
189    <p>
190      the following operation involving Booleans:
191    </p>
192    <pre class="brush: js">
193bCondition1 || bCondition2
194</pre>
195    <p>
196      is always equal to:
197    </p>
198    <pre class="brush: js">
199!(!bCondition1 &amp;&amp; !bCondition2)
200</pre>
201    <h3>
202      Removing nested parenthesis
203    </h3>
204    <p>
205      As logical expressions are evaluated left to right, it is a
 >lways possible to remove parenthesis from a complex expression fo
 >llowing some rules.
206    </p>
207    <h4>
208      Removing nested AND
209    </h4>
210    <p>
211      The following composite operation involving Booleans:
212    </p>
213    <pre class="brush: js">
214bCondition1 || (bCondition2 &amp;&amp; bCondition3)
215</pre>
216    <p>
217      is always equal to:
218    </p>
219    <pre class="brush: js">
220bCondition1 || bCondition2 &amp;&amp; bCondition3
221</pre>
222    <h4>
223      Removing nested OR
224    </h4>
225    <p>
226      The following composite operation involving Booleans:
227    </p>
228    <pre class="brush: js">
229bCondition1 &amp;&amp; (bCondition2 || bCondition3)
230</pre>
231    <p>
232      is always equal to:
233    </p>
234    <pre class="brush: js">
235!(!bCondition1 || !bCondition2 &amp;&amp; !bCondition3)
236</pre>
130    <h3 id="Backward_Compatibility" name="Backward_Compatibility"237    <h2 id="Backward_Compatibility" name="Backward_Compatibility"
>>>>
n132    </h3>n239    </h2>
133    <h4 id="JavaScript_1.0_and_1.1" name="JavaScript_1.0_and_1.1"240    <h3 id="JavaScript_1.0_and_1.1" name="JavaScript_1.0_and_1.1"
>>>>
n135    </h4>n242    </h3>
n137      The <code>&amp;&amp;</code> and <code>||</code> operators bn244      The &amp;&amp; and <code>||</code> operators behave as foll
>ehave as follows:>ows:
t176    <h3 id="Examples" name="Examples">t
177      Examples
178    </h3>
179    <h4 id="Logical_AND_.28&amp;&amp;.29" name="Logical_AND_.28&a
>mp;&amp;.29"> 
180      Logical AND (<code>&amp;&amp;</code>)
181    </h4>
182    <p>
183      The following code shows examples of the <code>&amp;&amp;</
>code> (logical AND) operator. 
184    </p>
185    <pre>
186a1=true &amp;&amp; true       // t &amp;&amp; t returns true
187a2=true &amp;&amp; false      // t &amp;&amp; f returns false
188a3=false &amp;&amp; true      // f &amp;&amp; t returns false
189a4=false &amp;&amp; (3 == 4)  // f &amp;&amp; f returns false
190a5="Cat" &amp;&amp; "Dog"     // t &amp;&amp; t returns Dog
191a6=false &amp;&amp; "Cat"     // f &amp;&amp; t returns false
192a7="Cat" &amp;&amp; false     // t &amp;&amp; f returns false
193</pre>
194    <h4 id="Logical_OR_.28||.29" name="Logical_OR_.28||.29">
195      Logical OR (<code>||</code>)
196    </h4>
197    <p>
198      The following code shows examples of the <code>||</code> (l
>ogical OR) operator. 
199    </p>
200    <pre>
201o1=true || true       // t || t returns true
202o2=false || true      // f || t returns true
203o3=true || false      // t || f returns true
204o4=false || (3 == 4)  // f || f returns false
205o5="Cat" || "Dog"     // t || t returns Cat
206o6=false || "Cat"     // f || t returns Cat
207o7="Cat" || false     // t || f returns Cat
208</pre>
209    <h4 id="Logical_NOT_.28.21.29" name="Logical_NOT_.28.21.29">
210      Logical NOT (<code>!</code>)
211    </h4>
212    <p>
213      The following code shows examples of the <code>!</code> (lo
>gical NOT) operator. 
214    </p>
215    <pre>
216n1=!true              // !t returns false
217n2=!false             // !f returns true
218n3=!"Cat"             // !t returns false
219</pre>
220    <p>
221      &nbsp;
222    </p>

Back to History