JS中的数据类型

这篇博客详细介绍了JavaScript中的数据类型,包括基本数据类型如Number、String、Boolean等和引用数据类型如Object、Array、Function等。此外,还阐述了数据类型的判断方法如typeof、instanceof和constructor,以及基本数据类型与引用数据类型的主要区别,如值的可变性、属性方法的添加、赋值方式和内存存储位置等。
摘要由CSDN通过智能技术生成

一.数据类型

JS中有两种数据类型,分别为基本数据类型和复杂 (引用) 数据类型

二.基本数据类型

基本数据类型有:Number (数字)、String(字符串)、Boolean(布尔值)、Undefined(未定义)、Null(空)、Symbol(唯一值)、BigInt(大数字)

三.引用数据类型

引用数据类型有:Object(基类)、Array(数组)、new Date(日期)、RegExp(正则)、Function(函数)

四.数据类型的判断

  • typeof:一般用来判断基本数据类型 不能判断引用数据类型 会之间返回小写的字符串数据类型
console.log(
    typeof 100, //"number"
    typeof 'abc', //"string"
    typeof false, //"boolean"
    typeof undefined, //"undefined"
    typeof null, //"object"
    typeof [1,2,3], //"object"
    typeof {a:1,b:2,c:3}, //"object"
    typeof function(){console.log('aaa');}, //"function"
    typeof new Date(), //"object"
    typeof /^[a-zA-Z]{5,20}$/, //"object"
    typeof new Error() //"object"
    typeof new Number(100), //'object'
    typeof new String('abc'),// 'string'
    typeof new Boolean(true),//'boolean'
);

  • instanceof:instanceof运算符判定返回的是一个布尔值 false或true
console.log(
    100 instanceof Number, //false
    'dsfsf' instanceof String, //false
    false instanceof Boolean, //false
    undefined instanceof Object, //false
    null instanceof Object, //false
    [1,2,3] instanceof Array, //true
    {a:1,b:2,c:3} instanceof Object, //true
    function(){console.log('aaa');} instanceof Function, //true
    new Date() instanceof Date, //true
    /^[a-zA-Z]{5,20}$/ instanceof RegExp, //true
    new Error() instanceof Error //true
)

  • constructor:constructor是prototype对象上的属性,指向构造函数
console.log(new Number(123).constructor)
//ƒ Number() { [native code] }
  • Object.prototype.toString.call:可以通过toString来获取每个对象的数据类型
var toString = Object.prototype.toString;

toString.call(123); //"[object Number]"
toString.call('abcdef'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"
toString.call({name:'wenzi', age:25}); //"[object Object]"
toString.call(function(){ console.log('this is function'); }); //"[object Function]"
toString.call(undefined); //"[object Undefined]"
toString.call(null); //"[object Null]"
toString.call(new Date()); //"[object Date]"
toString.call(/^[a-zA-Z]{5,20}$/); //"[object RegExp]"
toString.call(new Error()); //"[object Error]"

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

基本数据类型

  1. 基本数据类型的值是不可变的
  2. 基本数据类型不可以添加属性和方法
  3. 基本数据类型的赋值是简单赋值
  4. 基本数据类型的比较是值的比较
  5. 基本数据类型是存放在栈区的

引用数据类型

1 . 引用类型的值是可以改变的
2. 引用类型可以添加属性和方法
3. 引用类型的赋值是对象引用
4. 引用类型的比较是引用的比较
5. 引用类型是同时保存在栈区和堆区中的

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

基本数据类型在栈中存储
在这里插入图片描述
引用数据类型在栈和堆中存储
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值