今天来学习一下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]