摘要:在講之前,先出一道經典面試題答案是如果對這個答案的得來明白的清清楚楚的就不用再往下看了。
在講之前,先出一道經典面試題:
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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 中作用域、執行上下文、不同作用域下變量提升與函數提升的表現、頂層對象以及如何避免創建...
閱讀 3724·2021-11-24 10:23
閱讀 2771·2021-09-06 15:02
閱讀 1274·2021-08-23 09:43
閱讀 2351·2019-08-30 15:44
閱讀 3045·2019-08-30 13:18
閱讀 779·2019-08-23 16:56
閱讀 1743·2019-08-23 16:10
閱讀 536·2019-08-23 15:08