成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS中的typeof和類型判斷

cppowboy / 2050人閱讀

摘要:摘要這篇文章講述運(yùn)算符判斷基本類型和引用類型的區(qū)別,以及怎么判斷數(shù)組類型和空對(duì)象有種原始類型,即和。類型判斷類型判斷,一般就是判斷是否是數(shù)組,是否是空對(duì)象。方法四使用語(yǔ)法,返回一個(gè)數(shù)組,只需要判斷數(shù)組長(zhǎng)度是否大于即可。

摘要

這篇文章講述typeof運(yùn)算符判斷基本類型和引用類型的區(qū)別,以及怎么判斷數(shù)組類型和空對(duì)象

typeof

ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。我們都知道可以使用typeof運(yùn)算符求得一個(gè)變量的類型,但是對(duì)引用類型變量卻只會(huì)返回object,也就是說(shuō)typeof只能正確識(shí)別基本類型值變量。

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"

您也許會(huì)問(wèn),為什么 typeof 運(yùn)算符對(duì)于 null 值會(huì)返回 "object"。這實(shí)際上是 JavaScript 最初實(shí)現(xiàn)中的一個(gè)錯(cuò)誤,然后被 ECMAScript 沿用了?,F(xiàn)在,null 被認(rèn)為是對(duì)象的占位符,從而解釋了這一矛盾,但從技術(shù)上來(lái)說(shuō),它仍然是原始值。

最后一個(gè)比較奇怪,typeof一個(gè)不存在的變量x居然返回了"object"而不是"undefined"。

我們?cè)趤?lái)如下代碼

var a = function() {};
typeof a; // "function"

var b = [1,2,3];
typeof b; // "object"

var c = {};
typeof c; // "object"

對(duì)于數(shù)組和對(duì)象都返回"object",因此我們?nèi)粘i_(kāi)發(fā)中一個(gè)常見(jiàn)需求就是如何判斷變量是數(shù)組還是對(duì)象。

類型判斷

類型判斷,一般就是判斷是否是數(shù)組,是否是空對(duì)象。這是針對(duì)這個(gè)需求,我日常用過(guò)或見(jiàn)過(guò)的判斷方法

判斷是否是數(shù)組
有數(shù)組: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)的簡(jiǎn)寫(xiě)。

instanceofconstructor判斷的變量,必須在當(dāng)前頁(yè)面聲明的,比如,一個(gè)頁(yè)面(父頁(yè)面)有一個(gè)框架,框架中引用了一個(gè)頁(yè)面(子頁(yè)面),在子頁(yè)面中聲明了一個(gè)a,并將其賦值給父頁(yè)面的一個(gè)變量,這時(shí)判斷該變量,Array == object.constructor會(huì)返回false;

判斷是否是空對(duì)象
有變量:var obj = {};
方法一:

JSON.stringify(obj); // "{}"

通過(guò)轉(zhuǎn)換成JSON對(duì)象來(lái)判斷是否是空大括號(hào)

方法二:

if(obj.id){
   //如果屬性id存在....
}

這個(gè)方法比較土,大多數(shù)人都能想到,前提是得知道對(duì)象中有某個(gè)屬性。

方法三:

function isEmptyObject(e) {  
    var t;  
    for (t in e)  
        return !1;  
    return !0  
} 

//true
isEmptyObject(obj); 
//false
isEmptyObject({
    "a":1,
    "b":2
}); 

這個(gè)方法是jQuery的isEmptyObject()方法的實(shí)現(xiàn)方式。

方法四:
使用ES6語(yǔ)法Object.keys(obj),返回一個(gè)數(shù)組,只需要判斷數(shù)組長(zhǎng)度是否大于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/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83958.html

相關(guān)文章

  • JS基礎(chǔ)知識(shí) --變量類型計(jì)算

    摘要:邏輯運(yùn)算判斷一個(gè)變量會(huì)被當(dāng)做還是內(nèi)置函數(shù)和對(duì)象中內(nèi)置了一些函數(shù)和對(duì)象,直接可以調(diào)用開(kāi)發(fā)。根據(jù)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語(yǔ)法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。 變量類型和計(jì)算 1. 變量類型 js變量類型分為基本類型(或者叫值類型)和引用類型。(按照存儲(chǔ)方式區(qū)分)? 值類型 值類型:Number、String、Boolean、Null、Undefiend;...

    levy9527 評(píng)論0 收藏0
  • JS 中的類型判斷

    摘要:和這三種基本的數(shù)據(jù)類型,都有對(duì)應(yīng)的引用包裝類型和。應(yīng)用于引用類型的判斷,所以對(duì)于這三類基本類型沒(méi)有什么意義。 JS 中的類型判斷 js中的數(shù)據(jù)類型 基本數(shù)據(jù)類型 undefined、number、string、boolean 引用數(shù)據(jù)類型 null、Object、Number、String、Boolean、Function、Array、Date、RegExp、Error、Argumen...

    ChanceWong 評(píng)論0 收藏0
  • <<編寫(xiě)可維護(hù)的javascript>> 筆記8(避免'空比較&#

    摘要:中常常會(huì)看到這種代碼變量與的比較這種用法很有問(wèn)題用來(lái)判斷變量是否被賦予了一個(gè)合理的值比如不好的寫(xiě)法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個(gè)數(shù)組因?yàn)槲覀兛吹降膿碛泻瓦@段代碼的意圖非常明顯如果參數(shù)不是一個(gè)數(shù)組則停止接下來(lái)的操作這種寫(xiě)法的問(wèn)題在 js中, 常常會(huì)看到這種代碼: 變量與null的比較(這種用法很有問(wèn)題), 用來(lái)判斷變量是否被賦予了一個(gè)合理的值. 比如: const Contr...

    young.li 評(píng)論0 收藏0
  • JS類型判斷

    摘要:數(shù)據(jù)類型判斷有的時(shí)候需要判斷數(shù)據(jù)類型,應(yīng)對(duì)各種復(fù)雜的邏輯判斷,先來(lái)個(gè)咱們最常用的。操作符返回一個(gè)字符串,并表示該變量的類型。運(yùn)算符用于測(cè)試構(gòu)造函數(shù)的屬性是否出現(xiàn)在對(duì)象的原型鏈中的任何位置通俗點(diǎn)說(shuō)就是一個(gè)變量是否某個(gè)對(duì)象的實(shí)例。 JS數(shù)據(jù)類型判斷 有的時(shí)候需要判斷數(shù)據(jù)類型,應(yīng)對(duì)各種復(fù)雜的邏輯判斷,先來(lái)個(gè)咱們最常用的。 1.typeof typeof操作符返回一個(gè)字符串,并表示該變量的類型...

    yvonne 評(píng)論0 收藏0
  • js

    摘要:所以我們又可以得出一個(gè)結(jié)論原型的屬性指向構(gòu)造函數(shù),構(gòu)造函數(shù)又通過(guò)屬性指回原型,但是并不是所有函數(shù)都具有這個(gè)屬性,就沒(méi)有這個(gè)屬性。 1.原始類型 boolean number string null undefined symbol原始類型儲(chǔ)存的都是值,是沒(méi)有函數(shù)可以調(diào)用的,undefined.toString() 顯示報(bào)錯(cuò),但是1.toString() // 1 ; 是因?yàn)?被強(qiáng)制轉(zhuǎn)...

    pubdreamcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<