摘要:在讲之前,先出一道经典面试题答案是如果对这个答案的得来明白的清清楚楚的就不用再往下看了。
在讲之前,先出一道经典面试题:
var a = {n:1}; a.x = a = {n:2}; console.log(a.x);
答案是 : undefined
如果对这个答案的得来明白的清清楚楚的就不用再往下看了。
首先要了解运算符的优先级别(MDN地址)
可知,在当前表达式中
a.x = a = {n:2};
最优先的为".",成员访问运算符
那么上述的代码可以理解为
var a = {n:1}; var temp = a.x; temp = a = {n:2}; console.log(a.x);
接下来是多个赋值运算符的运算,
摘自JavaScript权威指南_第六版 82页
那么
var a = {n:1}; var temp = a.x; (temp = (a = {n:2})); console.log(a.x);
到这里,大家都明白了吧
a.x的地址获取在 a变化之前
所以导致了,当我们再去访问a.x的时候,其实访问的a已经不是之前的那个a了,自然a.x为undefined
这样更直观一点
var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);
var a = {n:1}; var b = a; // 使用b作为a的追踪 var temp = a.x; // 这个 相当于 var temp = b.x; temp = a = {n:2}; console.log(a.x); console.log(b.x); // 这里就是 console.log(temp); => {n:2}
End...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/95643.html
用Jmeter做接口测试只需要掌握几个核心功能就可以了。 并不一定要把它所有的功能都掌握,先掌握核心功能入行,然后再根据工作需要和职业规划来学习更多的内容。这篇文章在前面接口测试框架(测试计划--->线程组--->请求--->查看结果树)的前提下,来介绍必须要掌握的几个核心功能,力求用最短的时间取得最大的成果。 在前面的文章中我提到,用Jmeter做接口测试的核心是单接口测试的参数化和关联接口测试...
摘要:第四点也要着重讲下,记住构造函数被操作,要让正常作用最好不能在构造函数里 4) this、new、call和apply的相关问题 讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解this指针更加有现实意义。 下面我们看看在ja...
摘要:要理解函数的提升行为,让我们先解析什么是的提升。也就是说声明提升了,赋值还留着原地,等待执行。声明被提升,而包括函数表达式的赋值在内的赋值操作并不会提升,而是留在原地等待执行。 javaScript自上而下执行的顺序受到很多新手和部分老手的共识,但是这其实并不完全正确,这涉及到js的编译过程,这方面我们稍后会聊到,先考虑下面代码: window.onload = function(){...
摘要:不同的是函数体并不会再被提升至函数作用域头部,而仅会被提升到块级作用域头部避免全局变量在计算机编程中,全局变量指的是在所有作用域中都能访问的变量。 ES6 变量作用域与提升:变量的生命周期详解从属于笔者的现代 JavaScript 开发:语法基础与实践技巧系列文章。本文详细讨论了 JavaScript 中作用域、执行上下文、不同作用域下变量提升与函数提升的表现、顶层对象以及如何避免创建...
阅读 3695·2021-11-24 10:23
阅读 2736·2021-09-06 15:02
阅读 1252·2021-08-23 09:43
阅读 2338·2019-08-30 15:44
阅读 3025·2019-08-30 13:18
阅读 760·2019-08-23 16:56
阅读 1728·2019-08-23 16:10
阅读 513·2019-08-23 15:08