摘要:摘要這篇文章講述運算符判斷基本類型和引用類型的區別,以及怎么判斷數組類型和空對象有種原始類型,即和。類型判斷類型判斷,一般就是判斷是否是數組,是否是空對象。方法四使用語法,返回一個數組,只需要判斷數組長度是否大于即可。
摘要
這篇文章講述typeof運算符判斷基本類型和引用類型的區別,以及怎么判斷數組類型和空對象
typeofECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。我們都知道可以使用typeof運算符求得一個變量的類型,但是對引用類型變量卻只會返回object,也就是說typeof只能正確識別基本類型值變量。
var a = "abc"; typeof a;// "string" var b = 123; typeof b;// "number" var c = true; typeof c;// "boolean" var d = null; typeof d;// "object" var f = undefined; typeof f;// "undefined" var g; typeof g;// "undefined" typeof x;// "object"
您也許會問,為什么 typeof 運算符對于 null 值會返回 "object"。這實際上是 JavaScript 最初實現中的一個錯誤,然后被 ECMAScript 沿用了。現在,null 被認為是對象的占位符,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。
最后一個比較奇怪,typeof一個不存在的變量x居然返回了"object"而不是"undefined"。
我們在來如下代碼
var a = function() {}; typeof a; // "function" var b = [1,2,3]; typeof b; // "object" var c = {}; typeof c; // "object"
對于數組和對象都返回"object",因此我們日常開發中一個常見需求就是如何判斷變量是數組還是對象。
類型判斷類型判斷,一般就是判斷是否是數組,是否是空對象。這是針對這個需求,我日常用過或見過的判斷方法
判斷是否是數組
有數組:var a = [1,2,3,4,5];
方法一:
toString.call(a); // "[object Array]"
方法二:
a instanceof Array; //true
方法三:
a.constructor == Array; //true
第一種方法比較通用,也就是Object.prototype.toString.call(a)的簡寫。
instanceof和constructor判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個a,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor會返回false;
判斷是否是空對象
有變量:var obj = {};
方法一:
JSON.stringify(obj); // "{}"
通過轉換成JSON對象來判斷是否是空大括號
方法二:
if(obj.id){ //如果屬性id存在.... }
這個方法比較土,大多數人都能想到,前提是得知道對象中有某個屬性。
方法三:
function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } //true isEmptyObject(obj); //false isEmptyObject({ "a":1, "b":2 });
這個方法是jQuery的isEmptyObject()方法的實現方式。
方法四:
使用ES6語法Object.keys(obj),返回一個數組,只需要判斷數組長度是否大于0即可。
function isEmptyObject(obj){ if(Object.keys(obj).length > 0) return true; return false;
推薦使用方法四。
文章出處:http://dunizb.com
原文鏈接:http://dunizb.com/2017/07/08/JS-in-the-typeof-and-type-judgment/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83958.html
摘要:邏輯運算判斷一個變量會被當做還是內置函數和對象中內置了一些函數和對象,直接可以調用開發。根據提供的內置函數包括和。注意基礎語法提供的內置函數和方法只有這些,像那是瀏覽器提供給我們的。 變量類型和計算 1. 變量類型 js變量類型分為基本類型(或者叫值類型)和引用類型。(按照存儲方式區分)? 值類型 值類型:Number、String、Boolean、Null、Undefiend;...
摘要:和這三種基本的數據類型,都有對應的引用包裝類型和。應用于引用類型的判斷,所以對于這三類基本類型沒有什么意義。 JS 中的類型判斷 js中的數據類型 基本數據類型 undefined、number、string、boolean 引用數據類型 null、Object、Number、String、Boolean、Function、Array、Date、RegExp、Error、Argumen...
摘要:中常常會看到這種代碼變量與的比較這種用法很有問題用來判斷變量是否被賦予了一個合理的值比如不好的寫法執行一些邏輯這段代碼中方法顯然是希望是一個數組因為我們看到的擁有和這段代碼的意圖非常明顯如果參數不是一個數組則停止接下來的操作這種寫法的問題在 js中, 常常會看到這種代碼: 變量與null的比較(這種用法很有問題), 用來判斷變量是否被賦予了一個合理的值. 比如: const Contr...
摘要:所以我們又可以得出一個結論原型的屬性指向構造函數,構造函數又通過屬性指回原型,但是并不是所有函數都具有這個屬性,就沒有這個屬性。 1.原始類型 boolean number string null undefined symbol原始類型儲存的都是值,是沒有函數可以調用的,undefined.toString() 顯示報錯,但是1.toString() // 1 ; 是因為1被強制轉...
閱讀 1755·2021-11-18 13:20
閱讀 1140·2021-10-11 10:59
閱讀 2986·2021-08-24 10:01
閱讀 3499·2019-08-29 14:21
閱讀 3351·2019-08-29 14:15
閱讀 3512·2019-08-26 12:23
閱讀 3342·2019-08-26 11:46
閱讀 3344·2019-08-26 11:35