js類型判斷

typeof

console.log(typeof('yayu'))//string

console.log(typeof 'yayu')//string

typeof 是一元操作符祈远,放在其單個操作數(shù)的前面凑阶,操作數(shù)可以是任意類型灌砖。返回值為表示操作數(shù)類型的一個字符串错负。

那我們都知道玩敏,在 ES6 前师抄,JavaScript 共六種數(shù)據(jù)類型二拐,分別是:

Undefined、Null混蔼、Boolean、Number珊燎、String惭嚣、Object

然而當我們使用 typeof 對這些數(shù)據(jù)類型的值進行操作的時候,返回的結果卻不是一一對應悔政,分別是:

undefined晚吞、object、boolean谋国、number槽地、string、object

注意以上都是小寫的字符串。Null 和 Object 類型都返回了 object 字符串捌蚊。

盡管不能一一對應集畅,但是 typeof 卻能檢測出函數(shù)類型:

functiona() {}console.log(typeof a);//function

所以 typeof 能檢測出六種類型的值,但是缅糟,除此之外 Object 下還有很多細分的類型吶挺智,如 Array、Function窗宦、Date逃贝、RegExp、Error 等迫摔。

如果用 typeof 去檢測這些類型沐扳,舉個例子:

vardate=newDate();varerror=newError();console.log(typeofdate);//objectconsole.log(typeoferror);//object

返回的都是 object 吶,這可怎么區(qū)分~ 所以有沒有更好的方法呢句占?

Object.prototype.toString();

當 toString 方法被調用的時候沪摄,下面的步驟會被執(zhí)行:

如果 this 值是 undefined,就返回 [object Undefined]

如果 this 的值是 null纱烘,就返回 [object Null]

讓 O 成為 ToObject(this) 的結果

讓 class 成為 O 的內部屬性 [[Class]] 的值

最后返回由 "[object " 和 class 和 "]" 三個部分組成的字符串

通過規(guī)范杨拐,我們至少知道了調用 Object.prototype.toString 會返回一個由 "[object " 和 class 和 "]" 組成的字符串,而 class 是要判斷的對象的內部屬性擂啥。

讓我們寫個 demo:

console.log(Object.prototype.toString.call(undefined));//[object undefined]

console.log(Object.prototype.toString.call(null));//[object null]

var ?date=new Date();

console.log(Object.prototype.toString.call(date)); //[object Date]

正是因為這種特性哄陶,我們可以用 Object.prototype.toString 方法識別出更多類型!

那到底能識別多少種類型呢哺壶?

至少 12 種屋吨!

var number=1;//[object Number]

var string='123';//[object String]

var boolean=true;//[object Boolean]

var und=undefined;//[object Undefined]

var nul=null;//[object Null]

var obj={a:1}//[object Object]

var array=[1,2,3];//[object Array]

var date=new Date();//[object Date]

var error=new Error();//[object Error]

var reg=/a/g;//[object RegExp]

var func=function a(){};//[object Function]

function checkType() {

for(vari=0; i<arguments.length;i++){

? console.log(Object.prototype.toString.call(arguments[i]))

}

}

checkType(number,string,boolean,und,nul,obj,array,date,error,reg,func)

除了以上 11 種之外,還有:

console.log(Object.prototype.toString.call(Math));//[object Math]

console.log(Object.prototype.toString.call(JSON));//[object JSON]

除了以上 13 種之外山宾,還有:

functiona() {console.log(Object.prototype.toString.call(arguments));//[object Arguments]}a();

所以我們可以識別至少 14 種類型至扰,當然我們也可以算出來,[[class]] 屬性至少有 12 個资锰。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末敢课,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绷杜,更是在濱河造成了極大的恐慌直秆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞭盟,死亡現(xiàn)場離奇詭異圾结,居然都是意外死亡,警方通過查閱死者的電腦和手機懊缺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門疫稿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來培他,“玉大人,你說我怎么就攤上這事遗座∫荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵途蒋,是天一觀的道長猛遍。 經(jīng)常有香客問我,道長号坡,這世上最難降的妖魔是什么懊烤? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮宽堆,結果婚禮上腌紧,老公的妹妹穿的比我還像新娘。我一直安慰自己畜隶,他們只是感情好壁肋,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著籽慢,像睡著了一般浸遗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箱亿,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天跛锌,我揣著相機與錄音,去河邊找鬼届惋。 笑死髓帽,一個胖子當著我的面吹牛,可吹牛的內容都是我干的盼樟。 我是一名探鬼主播氢卡,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晨缴!你這毒婦竟也來了?” 一聲冷哼從身側響起峡捡,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤击碗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后们拙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稍途,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年砚婆,在試婚紗的時候發(fā)現(xiàn)自己被綠了械拍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突勇。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坷虑,靈堂內的尸體忽然破棺而出甲馋,到底是詐尸還是另有隱情,我是刑警寧澤迄损,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布定躏,位于F島的核電站,受9級特大地震影響芹敌,放射性物質發(fā)生泄漏痊远。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一氏捞、第九天 我趴在偏房一處隱蔽的房頂上張望碧聪。 院中可真熱鬧,春花似錦液茎、人聲如沸逞姿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼凯。三九已至,卻和暖如春楚里,著一層夾襖步出監(jiān)牢的瞬間断部,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工班缎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝴光,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓达址,卻偏偏與公主長得像蔑祟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沉唠,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容