Javascriptの新しいBoolean()の目的は何ですか?



javascript true false 判定 (4)

何の使用です:

var flag = new Boolean(false); 

に比べ:

var flag = false;

あなたは実際にいつnew Boolean使用しますか?


興味深い質問:

新しいブール値を使用してブール値オブジェクトを作成します。 多くのシナリオがありますが、以下では1つのシナリオについて説明しました。

文字列の値とそのデータ型を一致させたいコード内で比較を行い、bool(true / false)する必要がある場合、単純なfalse値を代入する代わりに新しいブール値を使用します。

var flag = false;  
var flag2 = new Boolean (false);
alert(typeof flag);  //boolean object
alert(typeof flag2); //simple object

if (flag === flag2){
    alert("Value and datatype match");
}
else{
    alert("Value and datatype do not match");
}

Booleanクラスが揺れます。 このスパゲッティコードの代わりに🍝:

if (foo===true) this.launch();
else this.dontLaunch();

あなたはどんな偉大なプログラマーがやっていて、プロトタイプを拡張することができます!

Boolean.prototype.ifTrue=function(ifFunc,elseFunc){
    if (this.valueOf()===true) ifFunc(); 
    else elseFunc();
}
var foo=new Boolean(/*expression*/);
foo.ifTrue(this.launch.bind(this),this.dontLaunch.bind(this));

今はるかに良い。


グローバル関数Boolean()は、 newなしで呼び出されたときに型キャストに使用できます。

var foo = Boolean(bar); // equivalent to `var foo = !!bar`

newで呼び出すと、ラッパーオブジェクトが追加で作成されます。つまり、オブジェクトに任意のプロパティを割り当てることができます。

var foo = new Boolean(bar); // equivalent to `var foo = Object(Boolean(bar));`
foo.baz = 'quux';
alert(foo.baz);

これは、プリミティブがプロパティを保持できないため、プリミティブ値では不可能です。

var foo = true;
foo.baz = 'quux';
alert(foo.baz); // `foo.baz` is `undefined`

プリミティブにプロパティを割り当てても、自動ボクシングのためエラーは発生しません。

foo.baz = 'quux';

次のように解釈されます

// create and immediately discard a wrapper object:
(new Boolean(foo)).baz = 'quux';

プリミティブ値を元に戻すには、 valueOf()メソッドを呼び出す必要があります。 これは、実際にラップされた値を使用する場合に必要です。ブール値のコンテキストでは、オブジェクトは常にラップされた値がfalseあってもtrueに評価されるためです。

ブーリアンにプロパティを割り当てることができるという有用なアプリケーションに遭遇したことはありませんが、ボクシングはプリミティブ値への参照が必要な場合に役立ちます。


上記の質問の前に、ブール関数Boolean ()

Boolean(10 > 4) // return true
Boolean(4 > 9) // return false

次へ:真の値を持つすべてが真を返します。 例えば

100
-4
4.4
"hello"
"false" // note even the string value false return true.

真の価値を持たないものは偽を返す

NaN 
var x = 10 / "H"; // Boolean(x); return false.
undefined
"" 
0
-0
false 
null

Booleanオブジェクトはブール値のオブジェクトラッパーです。 必要に応じて、最初のパラメータとして渡された値がブール値に変換されます。 valueが省略された場合0, -0, null, false, NaN, undefinedまたは0, -0, null, false, NaN, undefined 、または空の文字列( "" )の場合、オブジェクトの初期値はfalseです。 任意のオブジェクトまたは文字列 "false"を含む他のすべての値は、初期値がtrueのオブジェクトを作成します。

これは非常に強力なトリックを可能にします。





boolean