百度js面试题
来源:互联网 发布:赛酷ocr软件 编辑:程序博客网 时间:2024/06/06 06:52
该题的难度系数: ★★★★(3~5颗星之间)
问:console.log(a.n, b.n)和console.log(a.x, b.x)的值分别为多少?
涉及的相关技术点: 1). 内存分析 2). 原型链 3). 运算符的优先级
题目如下:
var a = {n: 1}var b = aa.x = a = {n: 2}
问:console.log(a.n, b.n)和console.log(a.x, b.x)的值分别为多少?
运行结果如下:
接下来,我们分析下解题思路:
var a = {n: 1} 就是声明一个对象a,并把属性名为n,属性值为1的对象赋给它,
var b = a,然后再把对象a赋值给b,也就是现在a和b都指向了同个地方,值均为{n:1}
接下来的a.x = a = {n: 2}就是一个连等的赋值语句,这里要主要的是,赋值的时候,是从右向左赋值的,还有就是涉及到优先级问题,就是‘a.x’的优先级比赋值‘=’的优先级来得高,即现在先在内存里面声明了个属性x,暂时还没有值,如图所示:
现在开始右侧的赋值,也就是a={n:2},那么现在a对象的值已经变了,也就是说跟原来断掉关系了,如图所示:
接下来,再把a赋值给a.x,也就是现在的x也指向了{n:2}这个对象,如图所示:
最后,我们回过头来看下刚才的问题,答案就一目了然了。
a.n的值就是2了,
b.n的值就是1了,
a.x值为undefined,因为我们现在遵循的是属性查找,就是在整个原型链上查找,如果原型链上找不到,就返回undefined了,
b.x的值就是对象{n:2}了。
阅读全文
0 0
- 百度js面试题
- 百度HR给的JS面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 2007 百度面试题
- 百度面试题一道
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题1
- 百度面试题
- C语言——实例025 阶乘和
- 2016年不可错过的21个深度学习视频、教程和课程
- 二进制中有多少个1
- 关于oracle数据库编码的问题
- 【23种设计模式】之 原型模式(Prototype Pattern)
- 百度js面试题
- Python笔记(持续更新)
- KALI-RTL8811AU
- 查看 OSD 版本
- fork后父子进程共享资源
- Spring MVC:报错No converter found for return value of type
- java网络编程之Socket
- RecyclerView的适配器
- phpStudy for Linux (lnmp+lamp一键安装包)