ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptで変数が等しいかどうかを判断する方法

JavaScriptで変数が等しいかどうかを判断する方法

青灯夜游
青灯夜游オリジナル
2021-04-19 11:00:073460ブラウズ

判定方法: 1. 等価演算子「==」または「===」を使用する; 2. 配列内の toString() メソッドを使用する; 3. 「Object.is()」メソッドを使用する; 4 、まず「JSON.stringify()」を使用してオブジェクトまたは配列を文字列型に変換し、次に等価比較に「===」を使用します。

JavaScriptで変数が等しいかどうかを判断する方法

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

変数が等しいかどうかを判断する方法

変数が等しいかどうかを判断するには、大まかに次の方法があります

  • == および ===;
  • 配列内で toString メソッドを使用します;
  • # ES6Object.is メソッド;
  • JSON.stringify を使用して、比較のために String 型に変換します。

#== および ===#==

は変換型の比較演算子、

=== は厳密な比較演算子です。データ型が同じ場合、通常は == を使用しても問題は発生しません。

let num = 5;
let num2 = 5;

num == num2;//true
num === num2;//true
ただし、データ型に一貫性がない場合、==

は暗黙的な型変換を実行します。

let num = 5;
let str = '5';

num == str;//true
num === str;//false

'' == false;//true
'' === false;//false

null == undefined;//true
null === undefined;//false
暗黙的な変換タイプはある程度の利便性をもたらしますが、見つけにくい バグ

を引き起こす可能性もあるため、

=== を使用することをお勧めします。比較用です。これが TS が人気がある理由の 1 つです。 さらに、上記のリストはすべて基本的なデータ型の比較であり、===

を使用して参照型を比較す​​る場合には、特定の制限があります。

let a = {xx: 1};
let b = a;

a === b;//true

let c = {xx: 1};
let d = {xx: 1};

c === d;//false
参照型を比較す​​る場合、===

は値

ではなく、変数の参照が同じかどうかを比較します。参照が異なる場合は false が返されます。 === は無敵になる特効薬ではないことがわかります。オブジェクトが等しいかどうかを比較する場合、他のより信頼性の高い方法が必要です。

[推奨学習: JavaScript 上級チュートリアル]

Array toString メソッド

フロント エンドからバックエンド エンドからパラメータを渡す場合、バックエンドは で区切られた複数のパラメータを必要とする場合があります。

Array toString

メソッドの方が便利です。このメソッドは配列の比較にも使用できます。 <pre class="brush:js;toolbar:false;">let arr = [1,3,5,7,9]; let arr2 = [1,3,5,7,9]; arr.toString() === arr2.toString();//true &quot;1,3,5,7,9&quot;</pre> ただし、2 次元以上の配列の比較には使用できず、null

unknown

、## を含めることはできないという制限があります。 #object##. #、function など。そうしないと、次のようにエラーが発生しやすくなります。<pre class="brush:js;toolbar:false;">[1,3,5,[2,4,6]].toString();//&quot;1,3,5,2,4,6&quot; [1,null,undefined,&amp;#39;&amp;#39;,2].toString();//&quot;1,,,,2&quot; [{xx:2},window,1,2].toString();//&quot;[object Object],[object Window],1,2&quot;</pre>Object.is method

Object.is は ES6 の新しいメソッドです。=== と非常によく似ており、2 つの値が等しいかどうかを比較するためにも使用されます。

Object.is(1,1);//true
Object.is(&#39;str&#39;,&#39;str&#39;);//true
Object.is({},{});//false

違いは、 0-0

NaN

NaN の判断にあります。 <pre class="brush:js;toolbar:false;">+0 === -0 //true NaN === NaN //false Object.is(+0, -0) //false Object.is(NaN, NaN) //true</pre>互換性の問題に対処する場合、ポリフィルは次のように記述できます。 <pre class="brush:js;toolbar:false;">if (!Object.is) { Object.is = function(x, y) { if (x === y) { // 针对+0 不等于 -0的情况 return x !== 0 || 1 / x === 1 / y; } else { // 针对NaN的情况 return x !== x &amp;&amp; y !== y; } }; }</pre>JSON.stringify

JSON.stringify メソッドは、オブジェクトまたは配列を JSON 文字列に変換するために使用されます。 、結果の文字列はオブジェクトの比較に使用できます。

let obj = {name: &#39;lin&#39;, age: 24};
let obj2 = {name: &#39;lin&#39;, age: 24};

obj === obj2;//false
JSON.stringify(obj) === JSON.stringify(obj2);//true

JSON.stringify

は、=== がオブジェクトを正確に比較できないという制限を補いますが、一定の制限もあります。 ##、

function

symbol の値は無視されます。 さらに、JSON.parseJSON.stringify を使用すると、上記と同じ制限付きでオブジェクトのディープ コピーを実現できることにも言及する価値があります。

いつ使用するかシナリオが異なれば、要件も異なる場合があります。基本的なデータ型のみを比較する場合は、

===

で十分ですが、「一度だけ 」をしたい場合は、カスタム メソッドを使用するために一定のコストを支払う必要があるのは間違いありません。 日々繰り返される開発の中で、まだまだ探究する必要があります。

プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !

以上がJavaScriptで変数が等しいかどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。