目录
3.对象类型和原始类型的不同之处?函数参数是对象会发生什么问题?
4.typeof 是否能正确判断类型?instanceof 能正确判断对象的原理是?
1.原始类型有哪几种?
答:总共有6种,分别为:Number,Boolean,String,Symbol,undefined,null
2.null是不是对象?
console.log(typeof null);//object
答:不是,虽然 typeof null 返回的值是 object,但是null不是对象,而是基本数据类型的一种。 基本数据类型存储在栈内存,存储的是值。
3.对象类型和原始类型的不同之处?函数参数是对象会发生什么问题?
答:原始类型存储值,存于栈中,对象类型存储指针,存于堆中;
函数参数是对象时,由于变量中存的是指针,因此函数中对于对象类型中的值的变化也会在全局中体现。
4.typeof 是否能正确判断类型?instanceof 能正确判断对象的原理是,并说出它们区别?
typeof判断对象,除了function都会显示object,所以typeof并不能准确地判断变量类型,判断基本数据类型当中的数字、字符串、布尔、undefined以及函数可以准确判断
console.log(typeof 222);//number
console.log(typeof 'jingxiao');//string
console.log(typeof true);//boolean
console.log(typeof undefined);//undefined
console.log(typeof Symbol());//symbol
console.log(typeof Function);//function
instanceof 可以用instanceof判断对象的正确类型,它的内部机制是通过原型链来判断的。
区别:
typeof会返回一个变量的基本类型,instanceof返回的是一个布尔值
instanceof 可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型
而typeof 也存在弊端,它虽然可以判断基础数据类型(null 除外),但是引用数据类型中,除了function 类型以外,其他的也无法判断
5.最后给大家补充一下六个假值
false、null、0、“”、undefined 和 NaN