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]
上一篇:
Java基础知识总结(2021版)
下一篇:
js深拷贝与浅拷贝详解以及例子