摘要:操作符是確定一個變量是,還是的最佳工具引用來源高級程序設(shè)計(jì)圖靈程序設(shè)計(jì)叢書看下面例子,都檢測出來了,如果檢測的是一個對象或者就會會返回,如下看吧,一點(diǎn)區(qū)分度也沒有。
1.typeof
typeof 操作符是確定一個變量是String、Number、Boolean,還是undefined的最佳工具
引用來源:《JavaScript高級程序設(shè)計(jì)》圖靈程序設(shè)計(jì)叢書
看下面例子:
var s = "hello"; var num = 10; var bool = true; var und; typeof s; // "string" typeof num; // "number" typeof bool; // "boolean" typeof und; // "undefined"
ok,都檢測出來了,but, 如果檢測的是一個對象或者null,就會會返回Object,如下:
var n = null; var o = new Object(); typeof n; // "object" typeof o; // "object"
看吧,一點(diǎn)區(qū)分度也沒有。
所以: 在檢測基本數(shù)據(jù)類型時,typeof很好用,2.instanceof在檢測引用類型的值時,typeof的作用不大
var o = new Object(); var arr = []; var reg = /^abc$/ o instanceof Object //true arr instanceof Array //true reg instanceof RegExp //true
注意:使用instanceof操作符檢測基本數(shù)據(jù)類型的值時,都會返回false,盡管下面的例子看起來很矛盾
null instanceof Object // false typeof null // "object"3.Object.prototype.toString()
ECMA-262 規(guī)范中,toString方法是這樣定義的:
如果參數(shù)是未定義的值,則返回"[object Undefined]".
如果參數(shù)為null,則返回"[object Null]".
如果適用ToObject函數(shù)傳遞參數(shù),則返回對象.
如果參數(shù)為類,則返回包含對象的類.(Let class be the value of the [[Class]] internal property of O.)
返回一個由"[對象", 類, 和"]"拼接而成的字符串.
它可以返回引用類型更精準(zhǔn)的類型檢測
var o = new Object(); var arr = []; var reg = /^abc$/ Object.prototype.toString.call(o) // "[object Object]" Object.prototype.toString.call(arr) // "[object Array]" Object.prototype.toString.call(reg) // "[object RegExp]"
通過函數(shù)封裝處理一下:
var type = function (o) { var s = Object.prototype.toString.call(o); return s.match(/[object (.*?)]/)[1]; } type(o) // "Object" type(reg) // "RegExp" type(arr) // "Array"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103712.html
摘要:中的數(shù)據(jù)類型及其檢測數(shù)據(jù)類型基本類型引用類型類型檢測只能檢測基本數(shù)據(jù)類型,對于還有一個用于檢測某個對象的原型鏈?zhǔn)欠癜硞€構(gòu)造函數(shù)的屬性適用于檢測對象,它是基于原型鏈運(yùn)作的屬性返回一個指向創(chuàng)建了該對象原型的函數(shù)引用,該屬性的值是哪個函數(shù)本身 JavaScript中的數(shù)據(jù)類型及其檢測 1. 數(shù)據(jù)類型 1.1 基本類型 Number String Boolean Null Undefin...
摘要:用來檢測數(shù)據(jù)類型的運(yùn)算符語法雖然是基本數(shù)據(jù)類型值,但是它屬于空對象指針,檢測的結(jié)果是對象使用有自己的局限性,不能具體細(xì)分當(dāng)前的值是數(shù)組還是正則也就是不能細(xì)分對象類型的值先算檢測某一個實(shí)例是否屬于某各類的實(shí)例構(gòu)造函數(shù)使用檢測某個值是否屬于某 typeof 用來檢測數(shù)據(jù)類型的運(yùn)算符語法:typeof[value] typeof 12 //=>number typeof NaN //=>nu...
摘要:檢測函數(shù)從技術(shù)上講,中的函數(shù)是引用類型,同樣存在構(gòu)造函數(shù),每個函數(shù)都是其實(shí)例,比如不好的寫法然而,這個方法亦不能跨幀使用,因?yàn)槊總€幀都有各自的構(gòu)造函數(shù),好在運(yùn)算符也是可以用于函數(shù)的,返回。 上周寫過一篇讀書筆記《編寫可維護(hù)的JavaScript》之編程實(shí)踐,其中 第8章 避免『空比較』是博主在工作中遇坑較多的雷區(qū),所以特此把該章節(jié)重新整理分享,希望大家不再坑隊(duì)友(>﹏<)。 在 Jav...
摘要:值的比較只進(jìn)行值的比較會進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。只要在當(dāng)前實(shí)例的原型鏈上,我們用其檢測出來的結(jié)果都是。但檢測與不一樣,還可以處理基本數(shù)據(jù)類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數(shù)據(jù)類型,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。其中...
摘要:值的比較只進(jìn)行值的比較會進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。只要在當(dāng)前實(shí)例的原型鏈上,我們用其檢測出來的結(jié)果都是。但檢測與不一樣,還可以處理基本數(shù)據(jù)類型的檢測。 showImg(https://segmentfault.com/img/remote/1460000016733921); 一、JavaScript有幾種類型的值? Javascript有兩種數(shù)據(jù)類型,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。其中...
閱讀 797·2023-04-25 22:57
閱讀 3051·2021-11-23 10:03
閱讀 613·2021-11-22 15:24
閱讀 3156·2021-11-02 14:47
閱讀 2901·2021-09-10 11:23
閱讀 3115·2021-09-06 15:00
閱讀 3936·2019-08-30 15:56
閱讀 3322·2019-08-30 15:52