wordpress谷歌网站地图,中国建设银行招聘官网,深圳龙岗建站公司,手机网站建设渠道JavaScript值类型和引用类型两道经典面试题 题目1题目2 题目1
首先#xff0c;小试牛刀#xff0c;请看第一道题。
let a {x: 10
}
let b a
a.x 20
console.log(b.x)a {x: 30
}
console.log(b.x)
a.x 40
console.log(b.x);那么上述代码输出结果是多少呢#xff1f;
… JavaScript值类型和引用类型两道经典面试题 题目1题目2 题目1
首先小试牛刀请看第一道题。
let a {x: 10
}
let b a
a.x 20
console.log(b.x)a {x: 30
}
console.log(b.x)
a.x 40
console.log(b.x);那么上述代码输出结果是多少呢
答案揭晓
思路在内存中基本数据类型保存在栈中而引用数据类型是保存在堆中的。
下面详细解释一下
首先定义一个对象a有一个属性x值为10接着ba让a和b指向了同一个对象 接下来a修改了对象的x属性值为20然后为a赋值了一个新的对象{ x: 30 } 最后修改了a的x属性为40。 到这里相信大家对于输出的结果就一目了然了吧接下来看第二道题。
题目2
let a {n: 10
}
let b a
a.x a { n: 20 }
console.log(a.x)
console.log(b.x);废话不多说直接上答案。 接下来我们来一起分析具体过程
首先a指向一个对象{n:10}将a赋值给b此时a和b都指向同一个对象 接下来来看最重要的一行代码
a.x a { n: 20 }.运算符优先于 号运算符此时先执行.操作即在a的地址内放入x属性此处不同人有不同理解我暂时理解为属性名不是变量没有开辟新的空间此时才进行赋值运算赋值从右往左一次赋值即把{n:20}赋值给a及a.x此时a指向新地址{n:20}而a.x也指向新地址{n:20}。