js數據型別及判斷方法

2020-08-11 20:05:34
  1. js的數據可分爲兩大類:
    1)基本數據型別:String,Number,Boolean,Null,Undefined,Symbol(ES6新加入)
    2)參照數據型別:Object,Array,Function

由於js是一門弱型別語言,變數的型別根據所賦值的型別而變化
例:

let b=1;//b爲number型別
let c='你好';//c爲string型別
let d=true;//d爲Boolean型別
let e=null;//e爲null型別
let f=function(){}//f爲函數型別
  1. 判斷數據型別的三種方式
    1)typeof:
    在这里插入图片描述
    可以看出typeof判斷null時會判斷成object,,所以這可以說是js的一個小‘bug’,所以判斷一個變數是否爲null時不能用typeof這種方式,,,除此之外,typeof還會把Array型別判斷爲object,,記住這兩種特殊情況!!

    2)instanceof:專門判斷參照數據型別

    用法:a instanceof b(a是否爲b型別)

let a=[2];
let b={
    name:'curry'
}
let c=function(){
    console.log(11);
}
console.log(a instanceof Array);//true
console.log(b instanceof Object);//true
console.log(c instanceof Function);//true
console.log(a instanceof Object);//true
console.log(c instanceof Object);//true

由於陣列和函數都屬於物件的一種,所以判斷Object是都爲true

3)使用Object.prototype.toString.call()

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全域性物件 global 的參照

4)只判斷是否爲陣列型別時還可以用Array.isArray()
這種方法只判斷是否爲陣列,是返回true,否則返回false

let a=[2];
let b={
    name:'curry'
}
let c=function(){
    console.log(11);
}
console.log(Array.isArray(a));//true
console.log(Array.isArray(b));//false
console.log(Array.isArray(c));//false