javascript - ES6 數(shù)組解構(gòu)賦值 默認賦值
問題描述
在看到阮一峰的ES6教程解構(gòu)賦值,默認值時,這個地方?jīng)]太看懂。原文鏈接
注意,ES6 內(nèi)部使用嚴格相等運算符(===),判斷一個位置是否有值。所以,如果一個數(shù)組成員不嚴格等于undefined,默認值是不會生效的。
function f() { console.log(’aaa’);}let [x = f()] = [1];
書上說上面這段代碼等價于下面這段
let x;if ([1][0] === undefined) { x = f();} else { x = [1][0];}
請問一下這個[1][0]是哪里來的?不應該是下面這樣的嗎?
let x;if (1 === undefined) { x = f();} else { x = 1;}
問題解答
回答1:數(shù)組解構(gòu)時,原理是這樣的,把一個或者多個變量放到數(shù)組A中,然后讓這個數(shù)組A等于另一個數(shù)組B,那么解構(gòu)時A數(shù)組某個位置的值就等于B數(shù)組對應位置的值。
let [x = f()] = [1];
這段代碼的意思就是,首先創(chuàng)建一個數(shù)組A,數(shù)組A中的第一項是x,然后又有一個數(shù)組B,B = [1].然后令 A = B.最后的效果就是A[0] = B[0],即x=B[0],也即x=[1][0]。所以在判斷是不是等于undefined時,要這樣
if([1][0] === undefined)回答2:
右邊[1]中的1才是對應x呀,即[1][0]對應x
回答3:解構(gòu),解構(gòu),解構(gòu)。。。所以目的是把等號右邊的東西解開,所以肯定是要把[1]給解開的。
所以let [x]=[1],那么x就是[1][0],也就是1。所以其實x的賦值是根據(jù)[1][0]來判斷的。
不知道說的理解不理解,還是給文檔吧:
https://developer.mozilla.org...
相關(guān)文章:
1. Python從URL中提取域名2. 實現(xiàn)bing搜索工具urlAPI提交3. node.js - windows10下的npm全局路徑的復原或者將npm徹底刪除?4. python執(zhí)行cmd命令,怎么讓他執(zhí)行類似Ctrl+C效果將其結(jié)束命令?5. python - scrapy url去重6. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)7. mysql在限制條件下篩選某列數(shù)據(jù)相同的值8. 關(guān)于mysql聯(lián)合查詢一對多的顯示結(jié)果問題9. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。10. python - Django有哪些成功項目?
