web前端-數(shù)據(jù)類型, 以及類型判斷

數(shù)據(jù)類型

基本數(shù)據(jù)類型(值類型)

  • string 字符串類型
  • number 數(shù)值類型
  • boolean 布爾類型(true | false)
  • null
  • undefined 未定義

復(fù)雜數(shù)據(jù)類型(引用數(shù)據(jù)類型)

  • Object 對象類型 --> object
  • Array 數(shù)組類型 --> object
  • Date 日期類型 --> object
  • Math 數(shù)學函數(shù) --> object
  • Function 函數(shù)類型 --> function(并非object)
  • RegExp 正則表達式
  • String 字符串類型
  • Number 數(shù)值對象類型
  • Boolean 布爾對象類型

判斷數(shù)據(jù)類型 使用typeof關(guān)鍵字, typeof 返回的數(shù)據(jù)是string類型的

var str = 'abc';
var num = 111;
var flag = true;
var arr = [];
var date = new Date();
var fun = new Function();
var reg = new RegExp('/\g');

console.log(typeof str);// string
console.log(typeof num);// number
console.log(typeof flag);// boolean
console.log(typeof arr);// object
console.log(typeof Math);// object
console.log(typeof date);// object
console.log(typeof fun);// function
console.log(typeof null);// object
console.log(typeof undefined);// undefined
console.log(typeof reg);// object

注意: ECMA-262規(guī)定任何內(nèi)部實現(xiàn)[[Call]]方法的對象都應(yīng)該在使用typeof的時候返回'function' Safari 5之前和Chrome7之前版本中就實現(xiàn)了Call, 所以這些版本在檢測正則表達式的時候會返回function

typeof檢查數(shù)據(jù)類型的時候很好用, 但是檢查引用類型的值的時候卻不怎么給力, 所以要使用intanceof操作符, 但是此此操作符也有問題, 如下:

var str = 'abc';
var str2 = new String('bbb');
var num = 111;
var num2 = new Number(11);
var flag = true;
var flag2 = new Boolean(false);
var arr = [1,2,3];
var date = new Date();
var fun = new Function();
var reg = new RegExp('/\g');

console.log(str instanceof String);// false
console.log(str2 instanceof String);// true
console.log(num instanceof Number);// false
console.log(num2 instanceof Number);// true
console.log(flag instanceof Boolean);// false
console.log(flag2 instanceof Boolean);// true
console.log(arr instanceof Array);// true
console.log(date instanceof Date);// true
console.log(fun instanceof Function);// true
console.log(reg instanceof RegExp);// true

下面這種檢測類型方式最好使, 我們只需要截取出結(jié)果做比較即可.

var str = 'abc';
var str2 = new String('bbb');
var num = 111;
var num2 = new Number(11);
var flag = true;
var flag2 = new Boolean(false);
var arr = [1,2,3];
var date = new Date();
var fun = new Function();
var reg = new RegExp('/\g');
var jsonObj = {};

console.log(Object.prototype.toString.call(str));// [object String]
console.log(Object.prototype.toString.call(str2));// [object String]
console.log(Object.prototype.toString.call(num));// [object Number]
console.log(Object.prototype.toString.call(num2));// [object Number]
console.log(Object.prototype.toString.call(flag));// [object Boolean]
console.log(Object.prototype.toString.call(flag2));// [object Boolean]
console.log(Object.prototype.toString.call(arr));// [object Array]
console.log(Object.prototype.toString.call(date));// [object Date]
console.log(Object.prototype.toString.call(fun));// [object Function]
console.log(Object.prototype.toString.call(reg));// [object RegExp]
console.log(Object.prototype.toString.call(Math));// [object Math]
console.log(Object.prototype.toString.call(jsonObj));// [object Object]
var person = new Person();
console.log(person instanceof Person); // true

因為任何對象的超類都是Object , 所以任何對象使用instanceof Object 都會返回true

console.log(person instanceof Object); // true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,691評論 0 4
  • 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 790評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 這不是一篇學術(shù)文章。 《身體知道答案》(武志紅著) 如果我們能喝善舞,我們可以通過舞蹈歌唱來表達自己,表達真實的自...
    四只腳的團子閱讀 334評論 0 0
  • 包子,應(yīng)該是中國的早餐界里數(shù)一數(shù)二的招牌。 一籠包子配上一碗稀飯,再來點自家泡的小菜。吃一口包子喝一口稀飯,一籠包...
    她梔閱讀 885評論 0 2

友情鏈接更多精彩內(nèi)容