基本数据类型和引用数据类型

基本数据类型:Number String Boolean Undefined Null Symbol

引用数据类型:Object Array Data RegExp function

数据类型的判断方法

数据类型判断有typeof、instanceof、constructor、Object.prototype.toString.call()

typeof

判断基本数据类型都会返回对应的数据类型小写字符 还有引用数据类型中的function 它使用typeof检测也会返回小写的字符

基本数据类型中的Null 还有引用数据类型中的Array,Object,Date,RegExp 不可以使用typeof检测 都会返回一个小写的object

console.log(
    typeof 123456, //"number"
    typeof 'abc', //"string"
    typeof false, //"boolean"
    typeof null, //"object"
    typeof function(){}, //"function"
)

instanceof

instanceof运算符需要指定一个构造函数,或者说指定一个特定的类型,它用来判断这个构造函数的原型是否在给定对象的原型链上

console.log(
   100 instanceof Number, //false
   'dsfsf'instanceof String, //false
   undefined instanceof Object, //false
   null instanceof Object, //false
   [1, 2, 3] instanceof Array, //true
   function () {}instanceof Function, //true
)

注意:null 和 undefined 都返回false  这是因为他们的数据类型就是他们本身

constructor

根据实例对象寻找属性的 如果对象上没有实例属性或者方法时 就去原型链上寻找 所以实例对象也可以使用此属性

var num  = 1111;
var str  = 'qwertyuiop';
var bool = true;
var arr  = [1, 2, 3, 4];

console.log(
num.constructor==Number,
str.constructor==String,
bool.constructor==Boolean,
arr.constructor==Array,
)

除了除了undefined和null之外,其他类型都可以通过constructor属性来判断类型。

Object.prototype.toString.call()

Object.prototype.toString.call()  原生js最全能的数据类型判断 [object 数据类型]

var ass = Object.prototype.toString

toString.call(123456); //"[object Number]"
toString.call('qwertyuio'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"


这样可以看到这个方法判断一个变量的类型是最准确。

基本数据类型和引用数据类型的区别

基本数据类型是原始值,直接存贮在栈内存中,引用数据类型,他的值是在堆内存中开辟了一块新的内存空间,我们通过变量来复制一个引用数据类型的时候其实只是把这个开辟的内存空间的地址进行了一个赋值

基本数据类型和引用数据类型在内存中的执行图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值