web-dev-qa-db-ja.com

ブール値に変換する最もクリーンな方法

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

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

totoがデータに設定されているかどうか、つまり文字列またはオブジェクトに設定されており、undefinednullでもないことを確認し、対応するブール値を別の変数に設定する最もクリーンな方法が欲しいです。

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

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

Totoがfalseまたはundefinedおよびnull elseの場合、最初の!trueに設定され、2番目はそれを反転します。

しかし、それは少し不気味に見えます...だからそうするためのより良い/よりきれいな方法はありますか?

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

72
Aracthor

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

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
116
Robo Robok