JavaScript 数据类型

1. 介绍

在 JavaScript 中数据类型大致分两种:

  • 原始值(原始数据类型)

  • 引用值(引用数据类型)

2. 原始值

原始数据类型有以下5种:

  • number:表示数字,如:整数、小数、NaN

  • string:表示字符串,如:字符串

  • boolean:表示布尔值,如:true、false

  • null:表示一个对象为空的占位符

  • undefined:表示未定义,即如果一个变量没有赋予初始化值,则会被默认赋值为undefined

原始值特点:不可改变的原始值,栈 (stack) 数据;栈内存的特性就是 first-in-last-out

3. 引用值

引用数据类型有以下几种:

  • array

  • Object

  • function

  • date

  • RegExp(正则表达式)

引用值特点:堆 (heap) 数据;堆内存的特性就像 "储物格那样,怎么放就怎么拿"(存放是分散没规律的)

以上每一个引用数据类型我们都需会在接下来的文章中,再详细讲解,因为它涉及的内容太多。

4. 两者的区别

  • 特点不一样,原始值是存放在 stack栈 里面的,而引用值大致存放在 heap堆 里面的。

  • 在栈内存中,无论是原始值或引用值,之间的赋值均是拷贝行为。

  • 原始值:两个原始值在栈内存之间赋值,会产生两独立房间,因此两者之间不会互相影响。

  • 引用值:引用值是存放在堆内存中,而引用值所对应的地址则存放在栈内存的。当两个引用值之间发生赋值,拷贝的是引用值的地址,再由地址指向堆中的数据。

    // 原始值往栈内存放数据 - 案例:
    var a = 10; 
    var b = a;
    a = 20;
    document.write(b);      // 结果为:10

    // 引用值往堆内存放数据 - 案例1:
    var arr = [1];
    var arr1 = arr;
    arr.push(2);
    document.write(arr);    // 结果为: arr等于   [1,2]
    document.write(arr1);   // 结果为: arr1等于  [1,2]

    // 引用值往堆内存放数据 - 案例2:
    var arr =[1,2];
    var arr1 = arr;
    arr = [1,3];
    document.write(arr1);     // 结果为:arr1等于 [1,2]
    document.write(arr);      // 结果为:arr等于  [1,3]
    /*
     - 第二案例是往原数组中插入数据,即在堆内存中的原数据房间中进行修改
     - 第三案例是重新对原数组赋值,重新赋值意味着:堆内存数据重新开新房间,新房间对应的地址也跟着变
    */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值