快捷搜索: 王者荣耀 脱发

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]
经验分享 程序员 微信小程序 职场和发展