百度HR给的JS面试题
2017-02-08 10:34
162 查看
说出以下代码运行结果
var a = {n: 1}
var b = a;
a.x = a = {n: 2}
console.log(a.x);
console.log(b.x)
输出:
undefined
n:2
解析:
var a = {n: 1} //
定义变量 a
为一个新对象,且这个新对象有一个值为 1
的 n
成员
var b = a; //
定义变量 b
,并且让 b
也引用变量 a
的对象
// 经过上面这两句之后,变量 a 和 b 都引用了对象 {n:1}
// 下面这句是问题的关键
a.x = a = {n: 2}
// a.x = 表示要给 a 引用的那个对象 {n:1} 的 x 成员赋值
// 实际上,此时变量 b 也引用了这个对象 {n:1}
// 此时,JavaScript引擎首先给 {n:1} 添加一个空的 x 成员,即:{n:1,x:undefined}
// 接下来要给{n:1,x:undefined}.x 赋的是什么值呢?
// 要赋的值是 a = {n: 2}
// 也就是先让变量 a 引用一个新的对象 {n:2}
// 然后再把 a 的新值赋给{n:1,x:undefined}.x
// 所以原来的那个对象变成了 {n:1,x:{n:2}}
// 由于变量 b 始终引用那个原来的对象,所以 b 的值是 {n:1,x:{n:2}}
// 由于变量 a 被赋予了一个新的对象,所以 a 的值是 {n:2}
// 这面这两句是控制台输出
console.log(a.x); //变量 a 引用的对象是 {n:2},没有 x 成员,所以输出 undefined
console.log(b.x); //
变量 b
引用的对象是{n:1,x:{n:2}},所以输出 {n:2}
需要web前端课程工具和电子书,可以加22群120342833
var a = {n: 1}
var b = a;
a.x = a = {n: 2}
console.log(a.x);
console.log(b.x)
输出:
undefined
n:2
解析:
var a = {n: 1} //
定义变量 a
为一个新对象,且这个新对象有一个值为 1
的 n
成员
var b = a; //
定义变量 b
,并且让 b
也引用变量 a
的对象
// 经过上面这两句之后,变量 a 和 b 都引用了对象 {n:1}
// 下面这句是问题的关键
a.x = a = {n: 2}
// a.x = 表示要给 a 引用的那个对象 {n:1} 的 x 成员赋值
// 实际上,此时变量 b 也引用了这个对象 {n:1}
// 此时,JavaScript引擎首先给 {n:1} 添加一个空的 x 成员,即:{n:1,x:undefined}
// 接下来要给{n:1,x:undefined}.x 赋的是什么值呢?
// 要赋的值是 a = {n: 2}
// 也就是先让变量 a 引用一个新的对象 {n:2}
// 然后再把 a 的新值赋给{n:1,x:undefined}.x
// 所以原来的那个对象变成了 {n:1,x:{n:2}}
// 由于变量 b 始终引用那个原来的对象,所以 b 的值是 {n:1,x:{n:2}}
// 由于变量 a 被赋予了一个新的对象,所以 a 的值是 {n:2}
// 这面这两句是控制台输出
console.log(a.x); //变量 a 引用的对象是 {n:2},没有 x 成员,所以输出 undefined
console.log(b.x); //
变量 b
引用的对象是{n:1,x:{n:2}},所以输出 {n:2}
需要web前端课程工具和电子书,可以加22群120342833
相关文章推荐
- 百度js面试题
- 史上最强大的PHP Web面试题(会做可进百度)----我的解答JS版本
- 新鲜出炉的百度js面试题
- 百度的Ajax.js文件(转载)
- 百度面试题
- 百度的Ajax.js文件(转载)
- 2007 百度面试题
- 用js实现上传图片前的预览(TX的面试题)
- 百度面试题
- 百度面试题(著名的蚂蚁问题)
- 百度的图片轮换JS代码,支持FF【转】
- 百度的一道面试题(关于Cache的)
- 软件公司常问的技术面试题(.net sql css js html)
- 百度面试题的java实现
- 一道百度面试题题解
- 百度的Ajax.js文件(转载)
- 百度面试题
- 用js实现上传图片前的预览(TX的面试题)
- 百度面试题——蚂蚁爬杆答案
- 百度面试题的java实现