2017-04-18 6 views
0

=====の違いはわかります.-基本的に===は、Javascriptエンジンが同じタイプの両方のパラメータを作成するためのパラメータの1つを変換するのを防ぎます。Javascript ES6。 ===とObject.isの違い

同一性:私たちは違いを見ることができますモジラのウェブサイト(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness)から

Object.isビットが混乱している(または多分===今混乱..です) - しかし、今、ES6で、new演算子が来ました比較:だから、私にとっては、Object.isのように見える

x   y ==  ===  Object.is 
+0   -0 true true false 
NaN  NaN false false true 

が一層厳格な比較パラメータであり、もしそうなら、質問が提起 - unstrictは(「厳密な等価」と呼ばれる)===だったか:)

答えて

1

それは、一般的に、ゼロに向けたObject.isの特別行動があるだけの時間をはNaNを扱う方法は別にトリプルイコール対

をObject.isを使用しますObject.definePropertyの特性の一部をミラーリングすることが望ましい場合には、特にプロパティ記述子に関して、特定のメタプログラミングスキームを追求することに興味があります。ユースケースでこれを必要としない場合は、Object.isを避け、代わりに===を使用することをお勧めします。 2つのNaN値の比較が真であるという要件が含まれていても、一般的に、NaNチェック(以前のバージョンのECMAScriptで使用可能なisNaNメソッドを使用)を使用する方が、周囲の計算があなたの比較で遭遇するゼロのサイン。

+0

その記事は読みにくいです。 。ありがとう:) –

+0

私は個人的にJSの4つのタイプの平等を少し見つける。特にSameValueとSameValueZero ... Uugh。 – gforce301

+0

ええ、そういうわけで、JS 'In The Hard Way'を学び始めたのです.-フードの下で最初に何を学ぶのですか? –

1

MDN経由:

これも===演算子に従って等しいと同じではありません。 ===演算子(と==演算子も同様)は、数値の値-0と+0を等しく扱い、Number.NaNをNaNと等しくないものとして扱います。リンクされた記事から

+0

ああ、これは方法です..うーん。それも同様の比較だと思っていました。しかし、比較も同様に方法ですよね? Thx、Javascriptの最初の日.. –

+1

@ J.D .:それは*比較です:あなたがそれを与える2つの引数のうち、平等のために(JavaScriptは少なくとも4つあります)。 :-) –

+0

@ T.J。 Crowderなので、演算子が関数のようにメモリ(Execution Context)に格納されていないと言っているのでしょうか?私が混乱させたのは、MDNからのこの行です - 'Object.is()メソッドは2つの値が同じ値であるかどうかを判断します。' - **メソッド**を書きます... –