JavaScript中值类型与引用类型

目录

01值类型与引用类型简单说明

值类型主要有:

引用类型主要有:

值类型代码示例

引用类型代码示例

02值类型和引用类型的赋值

03值类型和引用类型在函数中的使用

04值类型和引用类型的相关图示


01值类型与引用类型简单说明

值类型主要有:

  • number
  • string
  • boolean
  • undefined
  • null

引用类型主要有:

  • 对象(object)
  • 数组(Array)
  • 函数(Function)
  • String
  • Math
  • Date

值类型:保存为简单的数据值,赋值只是简单的数据值的复制

引用类型:保存为对象,其本质是指向内存位置的引用(地址),该地址指向具体的一块内存空间,在这块内存空间中存储着具体的数据赋值是                对地址的复制.

值类型代码示例

<script>
    var num1 = 10;
    var num2 = num1;    //把num1的值复制一份给num2,num1和num2的值相等,除此之外没有任何其他关系

    console.log(num1,num2);     //10,10
    console.log(num1 == num2);  //true

    num2 = 20;          //修改num2的值为20,不会对num1产生任何的影响
    console.log(num1,num2);     //10,20
    console.log(num1 == num2);  //false
</script>

引用类型代码示例

<script>
var arr1 = [1,2,3];
    var arr2 = arr1;
    console.log(arr1,arr2);             //[1,2,3],[1,2,3]
    console.log(arr1 == arr2);          //true

    var arr3 = [1,2,3];
    console.log(arr3);                  //[1,2,3]
    console.log(arr1 == arr3,arr2 == arr3); //false,false

    /**
     * 代码说明:
     * arr1和arr2在比较的时候,值相等(都是[1,2,3]),且引用相等(都指向堆中同一块数据),因此arr1和arr2相等
     * arr3和arr1以及arr2比较的时候,值相等([1,2,3]),但是引用不相等(arr3指向的是堆中另外一块数据),因此不等
     * 总结:引用类型在比较相等的时候,只有值和引用都相等才相等
     * */
</script>

02值类型和引用类型的赋值

赋值 = :默认会把右边存储的信息复制一份给左边

值类型的赋值: 把右边存储的信息(具体的数值)复制给左边,只是简单的数据复制,相互是独立的,修改其中一个

                        对另一个没有影响.

引用类型的赋值:把右边存储的信息(指向具体数据的地址)复制给左边,会共享同一份数据,修改其中一个对象属性的值会影响另一个

<script>
//引用类型使用注意
  console.log(arr1,arr2);         //[1,2,3],[1,2,3];
  console.log(arr1 == arr2);      //true
  arr1.push(4);
  console.log(arr1,arr2);         //[1,2,3,4],[1,2,3,4]

  /**
   * 代码说明:因为arr1和arr2内部的引用指向的是同一块数据,所以修改了arr1会对arr2也产生影响
   * */
</script>

03值类型和引用类型在函数中的使用

实参:实际的参数,通常可为常量、变量、表达式、函数等.

形参:通常是用来占位用的参数,用来接收实参数据的参数而已.

在函数调用的时候,函数默认会把实参的值赋值给形参.

值类型作为参数:在函数内部对形参变量进行修改不会影响到实参的值,即实参和形参是相互独立的.

引用类型作为参数:在函数内部对形参变量进行修改会影响到实参的值,因为他们的引用指向同一个对象.

04值类型和引用类型的相关图示

基本类型的赋值

    var str1 = "zs";
    var str2 = str1;

        

引用类型的结构与赋值

 var car = {
        color:"黑色",
        number:"B99"
    };


    var p1 = {
        name:"王宝宝",
        age:30,
        car:car
    };

var obj1 = {
        name:"lisi",
        age:18
    };

    var obj2 = obj1;

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值