「JavaScript/Boolean」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
M {{Nav}}
Ef3 (トーク | 投稿記録)
13 行
 
== Boolean ==
'''Boolean'''オブジェクトはJavaScriptのプリミティブな[[w:ブーリアン型|ブーリアン型]]をラップします。これは<code>true</code>や<code>false</code>が所属するオブジェクトとして便宜上定義されたもので、それ以上の意味はありません。何らかの値をBooleanオブジェクト(真偽値)に変換するには、Booleanオブジェクトを関数として呼び出します。ことき返す値は false または true で typeof は "boolean" です。他方、new を付けてコンストラクタを関数として呼び出しますと返す値の typeof は "object" となりBooleanラッパーオブジェクトです。
 
<syntaxhighlight lang="javascript">
varconst bool = Boolean("0 but trueabc");
alert(bool); // true
</syntaxhighlight>
23 行
 
<syntaxhighlight lang="javascript">
varconst bool = !!"0 but trueabc";
alert(bool); // true
</syntaxhighlight>
 
<code>!!</code>の方が簡潔だという人もいれば、Booleanコンストラクタ関数の方がわかりやすいという人もいるでしょう。[[JavaScript/制御構造#if|if文]]の条件式に渡されたオブジェクトは、自動的に真偽値に変換されます。なお、<code>"0 but true"</code> という文字列はただの文字列であり、特別な意味はありません
 
=== ブーリアンコンテキスト ===
[[JavaScript/制御構造#if|if文]]の条件式に渡されたオブジェクトは、自動的に真偽値に変換されます。このように、暗黙に真理値に変換される文脈は、'''ブーリアンコンテキスト'''とよばれます。
 
=== falsy ===
ブーリアンコンテキストで false に変換される値を falsy な値と呼びます。
 
; falsyな値
:; false : false そのもの
:; 0 : 数値ゼロ
:; -0 : 数値マイナスゼロ
:; 0n : BigIntのゼロ
:; "" : 空文字列
:; null : null
:; undefined : undefined - プリミティブ値
:; NaN : NaN
 
=== truthy ===
ブーリアンコンテキストで true に変換される値を truthy な値と呼びます。
ブーリアンコンテキストでは true/false の2値しか取りえないので、値集合の中で falsy とは補集合の関係にあります。
 
=== ブーリアンコンテキストと暗黙の型変換 ===
<syntaxhighlight lang="javascript">
const ary = [undefined, null, false, true, 0, 1, "", "1", [], [2]]
const json = ary.map(x => x === undefined ? "undefined" : JSON.stringify(x))
let s = ""
s += `{| class="wikitable"
|+ ブーリアンコンテキストと暗黙の型変換
! ${json.join("!!")}
`
s += `|-
| ${ary.map(x => `${Boolean(x)}:${typeof(Boolean(x))}` ).join("||")}
`
s += `|}`
console.log(s)
</syntaxhighlight>
 
{| class="wikitable"
|+ ブーリアンコンテキストと暗黙の型変換
! undefined!!null!!false!!true!!0!!1!!""!!"1"!![]!![2]
|-
| false:boolean||false:boolean||false:boolean||true:boolean||false:boolean||true:boolean||false:boolean||true:boolean||true:boolean||true:boolean
|}
 
=== プロパティ ===
* [[{{PAGENAME}}/prototype|prototype]]
 
== 脚注 ==
<references />
 
[[Category:JavaScript|{{SUBPAGENAME}}]]