ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript タイプ間の比較を共有する

JavaScript タイプ間の比較を共有する

零下一度
零下一度オリジナル
2017-06-26 13:26:571085ブラウズ

JavaScriptの種類

プリミティブタイプ:

  • number

  • string

  • boolean

  • null

  • 未定義

オブジェクトタイプ:

  • オブジェクト

  • 関数

  • 配列

  • 日付

  • ...

暗黙的な変換

+/-演算+/- 运算

  • "37" + 7 = "377"

  • "37" - 7 = 30

== 运算

以下为true:

  • "1.23" == 1.23

  • 0 == false

  • null == undefined

比较运算

===严格等于

  • 类型不同,返回false

  • 类型相同,以下为true:

  • null === null

  • undefine === null

  • NaN != NaN

  • new Object != new Obejct

==等于

  • 类型相同,同===

  • 类型不同,尝试类型转换比较

  • null == undefined

  • number == string 转number

  • boolean == ? 转number

  • Object == number | string 尝试对象转换为基本类型

  • 其他:false

包装类型

为了便于操作基本类型值,Js提供了基本类型的自动包装功能,每单读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,并在调用后自动销毁。

由于基本包装类型和基本类型的含义并不一样,会导致typeof等操作产生不同的结果,不推荐显示实例化基本数据类型

var a = "string";
alert(a.length);    //6

a.t = 3;
alert(a.t);         //undefined

类型检测

typeof

以下为true:

typeof 100 === “number”
typeof true === “boolean”
typeof function () {} === “function”
typeof(undefined) ) === “undefined”
typeof(new Object() ) === “object”
typeof( [1, 2] ) === “object”
typeof(NaN ) === “number”   //NaN也为number
typeof(null) === “object”

instanceof

obj instanceof Object

"37" + 7 = "377 "

"37" - 7 = 30

  • == 演算

  • 以下は true:

  • "1.23" == 1.23

  • 0 == false

🎜null == 未定義🎜🎜🎜🎜比較演算🎜🎜===🎜🎜🎜🎜異なる型、falseを返す🎜🎜🎜🎜同じ型、以下は真です: 🎜🎜 🎜🎜null === null🎜🎜🎜🎜undefine === null🎜🎜🎜🎜NaN != NaN🎜🎜🎜🎜new Object != new Objct🎜🎜🎜🎜== は🎜🎜と等しい🎜🎜同じ型、===と同じ🎜🎜🎜🎜型が異なる、比較するための型変換を試行🎜🎜🎜🎜null == 未定義🎜🎜🎜🎜number == string to数値🎜🎜🎜🎜boolean == ? 数値を変換します🎜🎜🎜🎜オブジェクト == 数値 | 文字列 オブジェクトを基本型に変換してみます🎜🎜🎜🎜その他: false🎜🎜🎜🎜基本型値の操作、Js は自動基本型パッケージング機能を提供します。基本型値が読み取られるたびに、対応する基本パッケージング型のオブジェクトがバックグラウンドで作成され、呼び出し後に自動的に破棄されます。 🎜🎜基本パッケージング型と基本型の意味が異なるため、typeof などの操作は異なる結果を生成します。インスタンス化された基本データ型を表示することはお勧めできません🎜
[1, 2] instanceof Array === true
new Object() instanceof Array === false
🎜型検出🎜🎜typeof🎜🎜次のことが当てはまります:🎜
Object.prototype.toString.apply([]); === “[object Array]”;
Object.prototype.toString.apply(function(){}); === “[object Function]”;
Object.prototype.toString.apply(null); === “[object Null]”
Object.prototype.toString.apply(undefined); === “[object Undefined]”

// IE6/7/8 Object.prototype.toString.apply(null) 返回”[object Object]”
🎜instanceof🎜🎜objinstanceofObjectは、オブジェクト間の判定に適したプロトタイプチェーンを判定に使用します。左側にオブジェクト、右側に関数オブジェクトまたは関数コンストラクターが必要です。 🎜🎜次のとおりです: 🎜rrreee🎜Object.prototype.toString.apply()🎜rrreee🎜 Summary🎜🎜🎜🎜typeof🎜 基本的な型と関数の検出に適しており、null に遭遇すると失敗します。 🎜🎜🎜🎜[[Class]]🎜組み込みオブジェクトとプリミティブ型に適した、{}.toString を通じて取得します (IE678 などは [object Object] を返します)。 🎜🎜🎜🎜instanceof🎜 はカスタム オブジェクトに適していますが、ネイティブ オブジェクトの検出にも使用できます。異なる iframe とウィンドウの間で検出する場合は失敗します。 🎜🎜🎜

以上がJavaScript タイプ間の比較を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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