4

私は と の違いを知っていますが==、それは厳密な等価性 ( ) ではなく型強制等価性 ( )を使用して評価されることになって===いると常に信じていました。if (condition) conditiontrue=====

例を参照してください。

if (1) {
    console.log("1");
}

if (1 == true) {
    console.log("2");
}

if (1 === true) {
    console.log("3");
}

戻り値:

::1
::2

true型が異なるため、1 が と厳密に等しいわけではないことはわかっていますif (condition)が、W3C に従って===実行する場合は、 の型強制等価性ではなく、厳密な等価性テスト ( ) を実行する必要があり==ます。

では、なぜ 1 を記録しているのでしょうか。

4

9 に答える 9

4

===厳密な比較演算子であるためです。

if (1 === true) { //they are of a different type

これを試しましたか

if (0) {  // This fails
    console.log("1");
}

0 = off, negative, no, false普遍的だから。これを確認してくださいなぜ0が偽なのですか?

一方、使用する場合===

if( 1 === true)  //It looks for type 1 as number and true as boolean

ES5 仕様では、次のアルゴリズムが定義されています。

ここに画像の説明を入力

于 2013-07-26T14:17:54.997 に答える
3

condition == trueECMAScript 言語仕様で指定されている と同等です。

于 2013-07-26T14:15:54.750 に答える
3

3 つの等号は、「型強制のない同等」を意味します。トリプル イコールを使用すると、値の型も同じでなければなりません。

JavaScript における == と === の違い

于 2013-07-26T14:16:56.707 に答える
0

if ステートメントで使用されているToBooleanに関する ECMA ドキュメントのセクションを見つけました。

要約すると:

Number : 引数が +0、-0、または NaN の場合、結果は false です。それ以外の場合、結果は true です。

于 2013-07-26T14:30:40.780 に答える