今回は、JS の typeof と型判定 (コード付き) についてお届けします。JS の typeof と型判定に関する注意事項 について、実際のケースを見てみましょう。
タイプ
ECMAScript には 5 つのプリミティブ型があります。つまり、未定義、Null、Boolean、Number、 弦。 typeofoperatorを使用して変数の型を見つけることができることは誰もが知っていますが、referencetype変数の場合はobjectのみを返します。つまり、typeofは基本的な型値変数のみを正しく識別できます。
りーtypeof 演算子が null 値に対して「object」を返す理由を疑問に思われるかもしれません。これは実際には JavaScript の元の実装のバグであり、その後 ECMAScript に採用されました。さて、ヌル はオブジェクトのプレースホルダーとみなされ、矛盾を説明していますが、技術的にはまだ原始的な値です。
最後の変数は奇妙で、存在しない変数 x の type は、実際には「未定義」ではなく「オブジェクト」を返します。
次のコードになります:
var a = "abc"; console.log(typeof a); // "string" var b = 123; console.log(typeof b); // "number" var c = true; console.log(typeof c); // "boolean" var d = null; console.log(typeof d); // "object" var f = undefined; console.log(typeof f); // "undefined" var g; console.log(typeof g); // "undefined" console.log(typeof x); // "undefined"
配列とオブジェクトの両方に対して「オブジェクト」が返されるため、日常の開発でよく必要になるのは、変数が配列であるかオブジェクトであるかを判断する方法です。
タイプ判定
型判定は一般的に配列か空オブジェクトかを判定することを指します。これは、この要件に対して私が毎日使用したり見たりしてきた判断方法です
配列かどうかを判断します
配列があります: var a = [1,2,3,4,5];
方法 1:
toString.call(a); // "[オブジェクト配列]" メソッド 2:
配列のインスタンス; //真のメソッド 3:
a.constructor == Array; //true 最初のメソッドはより一般的で、Object.prototype.toString.call(a) の略称です。
インスタンスオブとコンストラクターで判断される変数は、現在のページで宣言されている必要があります。たとえば、ページ (親ページ) にはフレームがあり、そのフレーム内で a が宣言されています。親ページに変数を与え、その変数を配列として判定します。 == object.constructor は false を返します;
var a = function() { }; console.log(typeof a); // "function" var b = [1,2,3]; console.log(typeof b); // "object" var c = { }; console.log(typeof c); // "object"
空のオブジェクトかどうかを判断します
変数があります: var obj = {};
方法 1:
JSON.stringify(obj); // "{}" は空中括弧かどうかを判断するために JSON オブジェクトに変換されます
方法 2:
if(obj.id){ //attributeid が存在する場合....} このメソッドは比較的単純で、ほとんどの人が思いつくことができます。前提として、オブジェクトに特定の属性が存在します。
方法 3:
var a = [1,2,3,4,5]; console.log(toString.call(a)); // "[object Array]" console.log(a instanceof Array); //true console.log(a.constructor == Array); //true
このメソッドは、jQuery の isEmptyObject() メソッドの実装です。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がJSでのtypeofと型判定(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。