JavaScript中如何判斷一個值的類型
我們知道在js中有一個運(yùn)算符可以幫助我們判斷一個值的類型,它就是typeof運(yùn)算符。
console.log(typeof 123); //number
console.log(typeof '123'); //string
console.log(typeof true); //boolean
console.log(typeof undefined); //undefined
console.log(typeof null); //object
console.log(typeof []); //object
console.log(typeof {}); //object
console.log(typeof function() {}); //function
我們從以上結(jié)果可以看出typeof的不足之處,它對于數(shù)值、字符串、布爾值分別返回number、string、boolean,函數(shù)返回function,undefined返回undefined,除此以外,其他情況都返回object。
所以如果返回值為object,我們是無法得知值的類型到底是數(shù)組還是對象或者其他值。為了準(zhǔn)確得到每個值的類型,我們必須使用js中另一個運(yùn)算符instanceof。下面簡單的說一下instanceof的用法。
instanceof運(yùn)算符返回一個布爾值,表示指定對象是否為某個構(gòu)造函數(shù)的實(shí)例。
instanceof運(yùn)算符的左邊是實(shí)例對象,右邊是構(gòu)造函數(shù)。它會檢查右邊構(gòu)造函數(shù)的ptototype屬性,是否在左邊對象的原型鏈上。
var b = []; b instanceof Array //true b instanceof Object //true
注意,instanceof運(yùn)算符只能用于對象,不適用原始類型的值。
所以我們可以結(jié)合typeof和instanceof運(yùn)算符的特性,來對一個值的類型做出較為準(zhǔn)確的判斷。
//得到一個值的類型
function getValueType(value) {
var type = '';
if (typeof value != 'object') {
type = typeof value;
} else {
if (value instanceof Array) {
type = 'array';
} else {
if (value instanceof Object) {
type = 'object';
} else {
type = 'null';
}
}
}
return type;
}
getValueType(123); //number
getValueType('123'); //string
getValueType(true); //boolean
getValueType(undefined); //undefined
getValueType(null); //null
getValueType([]); //array
getValueType({}); //object
getValueType(function(){}); //function
總結(jié)
以上所述是小編給大家介紹的JavaScript中如何判斷一個值的類型,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果
在ECSHOP的目錄/JS/common.js中有一個openSpeDiv方法是實(shí)現(xiàn)ECSHOP的彈窗效果的。接下來通過本文給大家分享使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果,需要的朋友參考下2017-03-03
Javascript取整函數(shù)及向零取整幾種常用的方法
這篇文章主要介紹了Javascript取整函數(shù)及向零取整幾種常用的方法,每種方法都有其特點(diǎn)和適用場景,推薦使用Math.trunc(),因?yàn)樗Z義明確、代碼易讀且性能較好,需要的朋友可以參考下2025-01-01
json數(shù)據(jù)處理及數(shù)據(jù)綁定
本文主要介紹了json數(shù)據(jù)處理及數(shù)據(jù)綁定的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧2017-01-01
getComputedStyle與currentStyle獲取樣式(style/class)
通過document.getElementById(element).style.xxx可以獲取元素的樣式信息但是對于通過class屬性引用的外部樣式表就獲取不到了,感興趣的朋友可以了解下2013-03-03
關(guān)于BootStrap modal 在IOS9中不能彈出的解決方法(IOS 9 bootstrap modal ios
本文給大家介紹BootStrap modal 在IOS9中不能彈出的問題以及bootstrap datepicker 在bootstrap modal中不顯示問題的解決方案,非常不錯,需要的朋友參考下2016-12-12
javascript放大鏡效果的簡單實(shí)現(xiàn)
這篇文章主要是對javascript放大鏡效果的簡單實(shí)現(xiàn)進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
通過layer實(shí)現(xiàn)可輸入的模態(tài)框的例子
今天小編就為大家分享一篇通過layer實(shí)現(xiàn)可輸入的模態(tài)框的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
uploadify插件實(shí)現(xiàn)多個圖片上傳并預(yù)覽
這篇文章主要為大家詳細(xì)介紹了uploadify插件實(shí)現(xiàn)多個圖片上傳并預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09

