JS
内置类型
js中分为七种内置类型,七种内置类型又分为两大类型;
基本类型和对象(object)。
基本类型有六种:null,undefined,boolean,number,string,symbol
其中js的数字类型是浮点类型,没有整型。并且浮点类型基于IEEE754标准实现,在使用中会遇到某些bug。NAN也属于number类型,并且NAN不等于自身。
对于基本类型来说,如果使用字面量的方式,那么这个变量只是个字面量,只有在必要的时候才会转换为对应的类型
let a=111 //这只是字面量,不是number类型
a.toString() //使用的时候才会转换为对象类型
对象(object)是引用类型,在使用过程中会遇到浅拷贝和深拷贝的问题
let a={name:'kk'}
let b=a
b.name='kk'
console.log(a.name) //kk
typeof
typeof 对于基本类型,除了 null 都可以显示正确的类型
typeof 1 //number
typeof '1' //string
typeof undefined //undefined
typeof true //boolean
typeof symbol() //symbol
typeof b //b没有声明,但是还会显示undefined
typeof 对于对象,除了函数都会显示object
typeof [] //object
typeof {} //object
typeof console.log //function
对于null来说,虽然它是基本类型,但是会显示object,这是一个存在很久的bug
typeof null //object
如果我们想获得一个变量的正确类型,可以通过Object.prototype.toString.call(xx)。这样就可以获取类似[Object type]的字符串
let a //我们也可以这样判断undefined
a === undefined //但是undefined不是保留字,能够在低版本浏览器被赋值
let undefined = 1 //这样判断就会出错 可以用下面的方式来判断,并且代码量更少
a === void 0 //void后面随便跟上一个组成表达式 返回就是undefined