js面试题:引用类型赋值地址

今天来学习一下360之前用过的面试题

一、js数据类型

js有两大数据类型

  • 基本类型
  • 引用类型
    //今天的面试题偏向于对引用类型的赋值地址理解

二、面试题

let x = [12,23]
        function  fn(y){
            y[0] = 100;
            y = [100];
            y[1]  = 200;
            console.log(y);
        }
        fn(x)
        console.log(x);
		//[100,200]
		//[100,23]

三、解析

//首先我们知道js对于引用类型的存值方法是在栈内存中保存堆内存数据的数据(对一个引用类型的赋值只是在对地址赋值)

let x = [12,23]
        function  fn(y){
            y[0] = 100; //这步操作等价于 x[0] = 100  ,此时传入的实参x数组为  [100,23]
            y = [100];   //声明一个[100]  直接赋值给 y 注意=>此时[100]的地址赋给了y   所以此时y已经被更新成[100]
            y[1]  = 200;//给y[1]添加一个新值为200
            console.log(y);//y = [100,200]
        }
        fn(x)//执行该函数时只有第一步改变了x值,其它的因为地址被改变指向了y
        console.log(x);//所以此时x 是[100,23]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值