blob: e6c3371fd8eb8e5ba170c7cadf4a257fea687960 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
---
title: 邏輯運算子
slug: >-
conflicting/Web/JavaScript/Guide/Expressions_and_Operators_351a6d9e4d31b32eff9762ef5deead93
translation_of: Web/JavaScript/Guide/Expressions_and_Operators
translation_of_original: Web/JavaScript/Guide/Obsolete_Pages/Operators/Logical_Operators
original_slug: Web/JavaScript/Obsolete_Pages/Obsolete_Pages/Obsolete_Pages/運算子/邏輯運算子
---
<p> </p>
<h3 id="邏輯運算子" name="邏輯運算子">邏輯運算子</h3>
<p>邏輯運算子通常和布林(邏輯)值一起使用,並返回布林值。然而,&& 和 || 運算子實際上返回的是指定的運算元的其中一個的值,所以如果這些運算子與非布林值一起使用,有可能返回非布林值。邏輯運算子的說明如下表。</p>
<table class="fullwidth-table"> <tbody> <tr> <th>運算子</th> <th>用法</th> <th>說明</th> </tr> <tr> <td>&&</td> <td>expr1 && expr2</td> <td>(邏輯 AND)如果 expr1 可以轉換為 false,就返回 expr1。否則返回 expr2。所以,當使用於布林值時,如果兩個運算元都為 true,&& 返回 true。否則返回 false。</td> </tr> <tr> <td>||</td> <td>expr1 || expr2</td> <td>(邏輯 OR)如果 expr1 可以轉換為 true,就返回 expr1。否則返回 expr2。所以,當使用於布林值時,如果其中一個運算元為 true,|| 返回 true,如果兩個運算元都為 false,就返回 false。</td> </tr> <tr> <td>!</td> <td>!expr</td> <td>(邏輯 NOT)如果運算元可以轉換為 true,就返回 false。否則返回 true。</td> </tr> </tbody>
</table>
<p><small><strong>表 3.7: 邏輯運算子</strong></small></p>
<p>可以轉換成 false 的表達式的例子有︰對 null、0、空字串 ("") 或 undefined 求值。</p>
<p>以下代碼為 &&(邏輯 AND)運算子的範例。</p>
<pre>a1=true && true // t && t 返回 true
a2=true && false // t && f 返回 false
a3=false && true // f && t 返回 false
a4=false && (3 == 4) // f && f 返回 false
a5="Cat" && "Dog" // t && t 返回 Dog
a6=false && "Cat" // f && t 返回 false
a7="Cat" && false // t && f 返回 false
</pre>
<p>以下代碼為 ||(邏輯 OR)運算子的範例。</p>
<pre>o1=true || true // t || t 返回 true
o2=false || true // f || t 返回 true
o3=true || false // t || f 返回 true
o4=false || (3 == 4) // f || f 返回 false
o5="Cat" || "Dog" // t || t 返回 Cat
o6=false || "Cat" // f || t 返回 Cat
o7="Cat" || false // t || f 返回 Cat
</pre>
<p>以下代碼為 !(邏輯 NOT)運算子的範例。</p>
<pre>n1=!true // !t 返回 false
n2=!false // !f 返回 true
n3=!"Cat" // !t 返回 false
</pre>
<h4 id="求值的最短路徑" name="求值的最短路徑">求值的最短路徑</h4>
<p>由於邏輯表達式是由左往右求值,他們使用以下規則來測試,儘可能以“最短路徑”求值︰</p>
<ul> <li><code>false</code> && <em>anything</em> 中的 false 是求值的最短路徑。</li> <li><code>true</code> || <em>anything</em> 中的 true 是求值的最短路徑。</li>
</ul>
<p>這些邏輯規則保證求出的值永遠正確。注意,上述表達式中的 <em>anything</em> 部分並未求值,因此所有未求值的部分都不會產生作用。</p>
<p>{{ PreviousNext("Core_JavaScript_1.5_教學:運算子:位元運算子", "Core_JavaScript_1.5_教學:運算子:字串運算子") }}</p>
<p>{{ languages( { "en": "en/Core_JavaScript_1.5_Guide/Operators/Logical_Operators", "es": "es/Gu\u00eda_JavaScript_1.5/Operadores/Operadores_l\u00f3gicos", "fr": "fr/Guide_JavaScript_1.5/Op\u00e9rateurs/Op\u00e9rateurs_logiques", "ja": "ja/Core_JavaScript_1.5_Guide/Operators/Logical_Operators", "ko": "ko/Core_JavaScript_1.5_Guide/Operators/Logical_Operators", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Operatory/Operatory_logiczne" } ) }}</p>
|