成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript數(shù)據(jù)類型判斷

luckyyulin / 2805人閱讀

摘要:日常工作中經(jīng)常會(huì)有判斷數(shù)據(jù)類型的需求,這里簡(jiǎn)單介紹下我平時(shí)判斷數(shù)據(jù)類型的幾種方式。當(dāng)使用檢測(cè)基本類型時(shí),會(huì)始終返回操作符確實(shí)解決了類型判斷的問題,但還是有一些不足之處。此外,只能返回,并不能直接返回?cái)?shù)據(jù)的類型。

JavaScript中有5種基本數(shù)據(jù)類型:undefined,String,Boolean,Number,Null,以及一種復(fù)雜數(shù)據(jù)類型Object。日常工作中經(jīng)常會(huì)有判斷數(shù)據(jù)類型的需求,這里簡(jiǎn)單介紹下我平時(shí)判斷數(shù)據(jù)類型的幾種方式。

1. typeof操作符

語(yǔ)法

    typeof variable

對(duì)一個(gè)值使用typeof會(huì)返回如下字符串

"undefined" 這個(gè)值未定義

"string" 這個(gè)值是字符串

"object" 這個(gè)值是對(duì)象或者null

"function" 這個(gè)值是函數(shù)

"number" 這個(gè)值是數(shù)值

"boolean" 這個(gè)值是布爾值

example:

var a;
console.log(typeof a) // "undefined"
var b = 123;
console.log(typeof b) // "number"

typeof是一個(gè)操作符,并不是作為全局對(duì)象的一個(gè)方法存在的,所以盡管可以像typeof(123)這樣調(diào)用,但圓括號(hào)并不是必須的。

2. instanceof操作符

當(dāng)我們檢測(cè)的數(shù)據(jù)類型是基本類型的時(shí)候,typeof能很好的滿足我們的需求,但在檢測(cè)引用類型的時(shí)候就顯得有些力不從心了,通常我們并不是想知道某個(gè)值是對(duì)象,而是想知道它是什么類型的對(duì)象。因此,JavaScript提供了instanceof操作符。

語(yǔ)法

    result = variable instanceof constructor

如果這個(gè)值是給定引用類型的實(shí)例,那么instanceof操作符就會(huì)返回true,否則會(huì)返回false。

example:

var obj = {};
console.log(obj instanceof Object); //true
console.log(obj instanceof RegExp); //false

當(dāng)使用instanceof檢測(cè)基本類型時(shí),會(huì)始終返回false

3. Object.prototype.toString.call(data)

instanceof操作符確實(shí)解決了類型判斷的問題,但還是有一些不足之處。由于instanceof是根據(jù)數(shù)值原型鏈來識(shí)別數(shù)據(jù)類型的,但是JS中所有引用類型都是Object的實(shí)例,因此在檢測(cè)一個(gè)引用類型的值與Object時(shí),會(huì)始終返回true。此外,instanceof只能返回true/false,并不能直接返回?cái)?shù)據(jù)的類型。因此,這里給大家介紹一種更直觀的檢測(cè)方式。

調(diào)用Object.prototypeto.String.call(data)會(huì)返回一個(gè)字符串,如

Object.prototype.toString.call(123) // "[object Number]"
Object.prototype.toString.call("123") // "[object String]"
Object.prototype.toString.call([123]) // "[object Array]"
Object.prototype.toString.call(/123/) // "[object RegExp]"

是不是很直觀呢,為了方便使用,還可以做一些簡(jiǎn)單的處理,進(jìn)一步的封裝為一個(gè)函數(shù),來供我們?cè)陂_發(fā)中使用。

    function checkType(data) {
        return {}.toString.call(data).match(/[A-Z]w+/)[0]
    };
    console.log(checkType(123))   // "Number"
    console.log(checkType([123])) // "Array"
    console.log(checkType(/123/)) // "RegExp"
    console.log(checkType(null))  // "Null"
4.小結(jié)

關(guān)于我在js中判斷數(shù)據(jù)類型的方式,就到這里了。如果有什么其它的建議,歡迎指點(diǎn),讓大家互相交流,互相學(xué)習(xí),一起進(jìn)步!最后,祝大家節(jié)日快樂!

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/88818.html

相關(guān)文章

  • 如何判斷JavaScript數(shù)據(jù)類型?

    摘要:本文將講解我目前所知道的判斷數(shù)據(jù)類型的方法。數(shù)據(jù)類型一共有種除了之外的種屬于原始數(shù)據(jù)類型。等價(jià)于問題四的返回值是什么答案。 本文將講解我目前所知道的判斷JavaScript數(shù)據(jù)類型的方法。JavaScript數(shù)據(jù)類型一共有7種: Undefined Null Boolean String Symbol Number Object 除了Object之外的6種屬于原始數(shù)據(jù)類型。有時(shí),我...

    jackzou 評(píng)論0 收藏0
  • javascript如何判斷變量的數(shù)據(jù)類型

    摘要:除和外,所有的數(shù)據(jù)類型都是可以轉(zhuǎn)化為對(duì)象,而如果是對(duì)象,就肯定有構(gòu)造函數(shù)。特性因?yàn)楹蜎]有構(gòu)造函數(shù),因此不能用此方法來判斷。由于同一條原型繼承鏈上的各個(gè)對(duì)象的構(gòu)造函數(shù)都不一樣,因此,此方法可以區(qū)分開繼承鏈上的各個(gè)自定義數(shù)據(jù)類型。 typeof 用法示例 var arr = []; typeof arr; //object typeof(arr); //object typeo...

    曹金海 評(píng)論0 收藏0
  • javascript 數(shù)據(jù)類型判斷 (常見庫(kù)的數(shù)據(jù)類型判斷源碼的分析)

    摘要:對(duì)象類型常見的有,,,正則新增自己提供的樂行判斷如果不對(duì)對(duì)象做嚴(yán)格區(qū)分使用。的實(shí)現(xiàn)使用了原型繼承的表示左表達(dá)式,表示右表達(dá)式,它是用是否等于來判斷對(duì)象的類型的。常見框架和庫(kù)的實(shí)數(shù)據(jù)類型判斷測(cè)試這里將的實(shí)現(xiàn)原理抽取出來,用原生實(shí)現(xiàn)。 JavaScript一共有六種數(shù)據(jù)類型,分為原始類型(又名基本類型)和對(duì)象類型(又名引用類型) 原始類型有五種,分別為number,string,boole...

    libin19890520 評(píng)論0 收藏0
  • JavaScript instanceof運(yùn)算符深入分析

    摘要:注意基本變量類型不是對(duì)象類型,只有基本包裝類型才是對(duì)象類型。至于顯示的原型,在里用屬性表示,這個(gè)是原型繼承的基礎(chǔ)知識(shí),在這里就不在敘述了。 前言 如果你要開發(fā)一個(gè)復(fù)雜的產(chǎn)品,那么肯定少不了使用面向?qū)ο髾C(jī)制,當(dāng)然也避不開 Javascript 里面的繼承,instanceof 運(yùn)算符是原生 Javascript 語(yǔ)言中用來判斷實(shí)例繼承的操作符。所以我們有必要深入理解該運(yùn)算符! inst...

    zhangyucha0 評(píng)論0 收藏0
  • JavaScript中,如何判斷數(shù)組是數(shù)組?

    摘要:比如我們今天要討論的,在當(dāng)中如何判斷一個(gè)數(shù)組是數(shù)組。在數(shù)組的原型鏈上也能找到構(gòu)造函數(shù)由上面的幾行代碼可以看出,使用運(yùn)算符可以分辨數(shù)組和對(duì)象,可以判斷數(shù)組是數(shù)組。用判斷實(shí)例化的數(shù)組擁有一個(gè)屬性,這個(gè)屬性指向生成這個(gè)數(shù)組的方法。 如果你沒有注意過這個(gè)問題,那么這個(gè)標(biāo)題應(yīng)該會(huì)讓你感到困惑,判斷數(shù)據(jù)類型這么基礎(chǔ)的問題能有什么坑呢? 少年,你不能太天真了,我們朝夕面對(duì)的這門語(yǔ)言,可是JavaSc...

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

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

0條評(píng)論

閱讀需要支付1元查看
<