真実か偽りを明示的なブール値に変換する


97

変数があります。それを呼びましょうtoto

これは、totoに設定することができundefinednull文字列、またはオブジェクト。

私がいるかどうかを確認したいと思いtoto手段は、文字列またはオブジェクトに設定されたデータに設定されており、どちらundefinednull、そしてセットが別の変数にブール値を対応します。

私は構文を考えました!!、それは次のようになります:

var tata = !!toto; // tata would be set to true or false, whatever toto is.

最初は、!に設定されますfalseトトがある場合undefinednull、およびtrue他の、そしてもう一つは、それを反転します。

しかし、少し奇妙に見えます。これを行うためのより明確な方法はありますか?

私はすでにこの質問を見ましたが、ifステートメントでチェックするだけでなく、変数に値を設定したいのです。


10
この質問は重複としてマークされていますが、他の質問stackoverflow.com/questions/263965/を見ると、 かなり異なります。それらはまったく複製ではありません
Sam

@Sam申し訳ありませんが、この重複を確認しました。他の質問については知りませんでしたが、問題は解決しました。
Aracthor 2015

11
ので@Aracthorそれは、重複ではありませんstackoverflow.com/questions/263965/...が自分のブール相手に言葉だけ「真」と「偽」を含む文字列を変換についてです。この質問は、真実か偽物かに基づいてANY変数をブール値に変換することに関するものです。
アランマクビー-MSFT 2017年

回答:


153

はい、いつでも使用できます:

var tata = Boolean(toto);

そしてここにいくつかのテストがあります:

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
    console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}

結果:

Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false

75
注目すべきは、Boolean( "false")は、おそらくfalseにしたい場合はtrueです。
スターリングボーン

45
なぜ「偽」の文字列を偽物にしたいのですか?phpでもそうではありません:D
Danon

1
彼は意味しBoolean("false")ます。
Robo Robok 2017

2
@NoahDavid trueを返します。キャストされる唯一の文字列falseは空の文字列("")です。
Robo Robok

6
丁度。引用符で囲まれていて文字列として解釈される場合に「false」というフレーズを使用する場合は、そのため注意が必要です。あなたはそれを偽にキャストしていると思うかもしれませんが、実際にはそれは真を返します-それゆえ元の警告です。
スターリングボーン

0

あなたは使用することができますBoolean(obj)または!!obj変換するためtruthy/falsytrue/false

var obj = {a: 1}
var to_bool_way1 = Boolean(obj) // true
var to_bool_way2 = !!obj // true
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.