javascript - ES6 陣列解構賦值 預設賦值
滿天的星座
滿天的星座 2017-06-07 09:24:42
0
3
1045

在看到阮一峰的ES6教程解構賦值,預設​​值時,這個地方沒太看懂。
原文連結

注意,ES6 內部使用嚴格相等運算子(===),判斷一個位置是否有值。所以,如果一個陣列成員不嚴格等於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;
}
滿天的星座
滿天的星座

全部回覆(3)
学习ing

數組解構時,原理是這樣的,把一個或多個變數放到數組A中,然後讓這個數組A等於另一個數組B,那麼解構時A數組某個位置的值就等於B數組對應位置的值。

let [x = f()] = [1];

這段程式碼的意思是,先建立一個陣列A,陣列A中的第一項是x,然後又有一個陣列B,B = [1].
然後令A = B.最後的效果就是A[ 0] = B[0],即x=B[0],也即x=[1][0]
所以在判斷是不是等於undefined時,要這樣

if([1][0] === undefined)
Ty80

右邊[1]中的1才是對應x呀,即[1][0]對應x

学霸

解構,解構,解構。 。 。所以目的是把等號右邊的東西解開,所以一定是要把[1]給解開的。

所以let [x]=[1],那麼x就是[1][0],也就是1。所以其實x的賦值是根據[1][0]來判斷的。

不知道說的理解不理解,還是給文件吧:

https://developer.mozilla.org...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!