「JavaScript/演算子」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎関係演算子: Fix typo; 出典を補う。
Ef3 (トーク | 投稿記録)
→‎論理演算子: 節に分解;+出典
447 行
 
== 論理演算子 ==
'''論理演算子'''(ろんりえんざんし、''logical operator'')とは、真値を返す論理的な演算子です。[[w:短絡評価|短絡評価]]と[[w:副作用 (プログラム)|副作用]]に注意してください<ref>[https://tc39.es/ecma262/#sec-binary-logical-operators ECMA-262::13.13 Binary Logical Operators]</ref>
 
=== 論理積演算子 (&&) ===
{| class="wikitable"
論理積演算子は、両方のオペランドが true であったら true を、それ以外は false を返します。
|+ JavaScriptの論理演算子
!==== 論理積演算子の構文 ====
<syntaxhighlight lang="javascript">left && right</syntaxhighlight>
! 意味
|-
| <code>''p'' && ''q''</code>
| 論理AND([[w:論理積|論理積]]、''p''かつ''q'')
|-
| <code>''p'' <nowiki>||</nowiki> ''q''</code>
| 論理OR([[w:論理和|論理和]]、''p''または''q'')
|-
| <code><nowiki>!</nowiki>''p''</code>
| 論理NOT([[w:否定|否定]]、''p''でない)
|}
 
=== 論理和演算子 (||) ===
<code>!(''p'' && ''q'')</code>は<code>(!''p'' || !''q'')</code>と等価であり、<code>!(''p'' || ''q'')</code>は<code>(!''p'' && !''q'')</code>と等価です([[w:ド・モルガンの法則|ド・モルガンの法則]])。論理[[w:排他的論理和|XOR]]演算子は存在しませんが、
論理和演算子は、片方または両方のオペランドが true であったら true を、それ以外は false を返します。
==== 論理和演算子の構文 ====
<syntaxhighlight lang="javascript">left && right</syntaxhighlight>
 
=== 否定演算子 (!) ===
* <code>(''p'' && !''q'') || (!''p'' && ''q'')</code>
否定演算子は、オペランドを論理型に変換した後、true であったら false を、false であったら true を返します。
* <code>(''p'' || ''q'') && (!''p'' || !''q'')</code>
==== 否定演算子の構文 ====
* <code>(''p'' || ''q'') && !(''p'' && ''q'')</code>
<syntaxhighlight lang="javascript">! bool</syntaxhighlight>
 
また論理値に正規化し
 
JavaScriptに[[w:排他的論理和|排他的論理和]]演算子は存在しませんが、
* <code>Boolean(''p'') != Boolean(''q'')</code>
と真偽値に変換した後、不一致を評価する式で実現できます。
 
|* <code>!''p'' &&!= !''q''</code>
と表すことができます(推奨)。
でも可。
 
== 関係演算子 ==