摘要:最近發現很多同學的博客里都會解釋連續賦值問題,各種概念輩出,特別是對于不理解的同學來說,更加一頭霧水,我這里做個簡單解釋,也許不懂的一看就明白了。
最近發現很多同學的博客里都會解釋js連續賦值問題,各種概念輩出,特別是對于不理解的同學來說,更加一頭霧水,我這里做個簡單解釋,也許不懂的一看就明白了。
先拋出一個問題:
var a = {c:1} //第一步 var b = a; //第二步 a.x = b.y = b = {c:2} //第三步 console.log(a) // {c:1,x:{c:2},y:{c:2}} console.log(b) // {c:2}
第一步,第二步相信大家都很好理解,但是第三步是什么鬼,現實中基本上很難遇到,而且也不推薦這么寫,好好的賦值不行么,干嘛要搞事情?對,話雖這么說,但是這畢竟是考驗大家對賦值的理解嘛。在拆解以上問題的時候,大伙兒要先明白兩個概念
1、引用數據細節給一個變量賦值的時候,若“=”右側是基本數據類型(Boolean String Number Null Undefined),就是真的“賦值”了;若“=”右側是復合型數據(Array Object),則是數據的引用,也就是“指向”不一樣而已
2、賦值數據可拆分成兩步例如:var d = 1 其實相當于 var d;d = 1;
理解以上兩個概念后,我們以圖示演示第一步、第二步執行完畢的結果
執行到第二步是以上結果,相信不難理解。
然后我們再將第三步拆解為步驟甲、乙、丙
a.x = undefined b.y = undefined
圖示
這個時候b的指向發生了變化
b = {c:2}
圖示:
最后將b指向的內容分別賦值給a.x a.y。這個時候問題的難點就來了。不是b.y么,為毛變成a.y了? 逗我玩呢是不?我們往上看,步驟乙,這個時候a和b都是指向同一個內存地址,誰的x誰的y沒有區別,大家是好兄弟,共用的。
a.x = {c:2} a.y = {c:2}
圖示:
是不是很簡單?如果你還是不理解,那么哥只能給你一個建議:吃飯睡覺上廁所,夜里別想妹子,只要腦袋是清醒的,就思考這個問題。不用兩天,你肯定可以搞懂。
PS:還搞不懂咋整?還搞不懂你打我(打不到)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92758.html
摘要:本文章記錄本人在深入學習條件表達式中看書理解到的一些東西,并且整理記錄下來,加深記憶和方便之后的復習。表達式的值具有線性特征,如對連續的區間值進行判斷。 本文章記錄本人在深入學習js條件表達式中看書理解到的一些東西,并且整理記錄下來,加深記憶和方便之后的復習。主要是深入學習if else和switch語句的一些性能優化和邏輯思維。 提高條件性能的策略 js的條件表達式和其他語言一樣...
摘要:優點簡單粗暴,直接調用缺點兼容性不太好,不過的話都支持你可能不知道的前端知識點對象和的方法。下面從深層次剖析一下對于開始的兩個賦值語句,,,相當于,而顯然等于。同理可以分析第三個賦值語句 有些東西很好用,但是你未必知道;有些東西你可能用過,但是你未必知道原理。 實現一個目的有多種途徑,俗話說,條條大路通羅馬。很多內容來自平時的一些收集以及過往博客文章底下的精彩評論,收集整理拓展一波,發...
摘要:優點簡單粗暴,直接調用缺點兼容性不太好,不過的話都支持你可能不知道的前端知識點對象和的方法。下面從深層次剖析一下對于開始的兩個賦值語句,,,相當于,而顯然等于。同理可以分析第三個賦值語句 有些東西很好用,但是你未必知道;有些東西你可能用過,但是你未必知道原理。 實現一個目的有多種途徑,俗話說,條條大路通羅馬。很多內容來自平時的一些收集以及過往博客文章底下的精彩評論,收集整理拓展一波,發...
摘要:優點簡單粗暴,直接調用缺點兼容性不太好,不過的話都支持你可能不知道的前端知識點對象和的方法。下面從深層次剖析一下對于開始的兩個賦值語句,,,相當于,而顯然等于。同理可以分析第三個賦值語句 有些東西很好用,但是你未必知道;有些東西你可能用過,但是你未必知道原理。 實現一個目的有多種途徑,俗話說,條條大路通羅馬。很多內容來自平時的一些收集以及過往博客文章底下的精彩評論,收集整理拓展一波,發...
閱讀 6912·2021-09-22 15:08
閱讀 1920·2021-08-24 10:03
閱讀 2437·2021-08-20 09:36
閱讀 1315·2020-12-03 17:22
閱讀 2474·2019-08-30 15:55
閱讀 905·2019-08-29 16:13
閱讀 3053·2019-08-29 12:41
閱讀 3249·2019-08-26 12:12