2015-10-05 55 views
0

在巴貝爾的網站,我發現下面的演示中解構範圍:ES6故障弱化解構

// Fail-soft destructuring 
var [a] = []; 
a === undefined; 

transpiling這片與巴貝爾代碼後,我得到了在ES5以下結果:

"use strict"; 

var _ref = []; 
var a = _ref[0]; 

什麼是fail-soft解構用於,以及transpiled語法背後的邏輯是什麼?編輯:爲什麼Babel以這種方式來處理ES6代碼,而不是僅僅將undefined賦值給變量?

編輯: 我看到了,我想它只是將變量值放到undefined而不是拋出一個錯誤。儘管如此,仍然有一些關於轉譯邏輯的疑問。

+0

爲什麼要數組的內容影響轉譯? – zeroflagL

+0

@zeroflagL沒有任何理由,我在腦子裏想着一個完全錯誤的方向,認爲這個軟解構的東西有些複雜/特殊,忘記了我們只是分配一個數組 - 哼。沒有看到這只是這個簡單的事情。 – Trace

回答

1

看,當你添加更多一些的例子會發生什麼:

var [a, b, c] = []; 

Transpiles到:

"use strict"; 

var _ref = []; 
var a = _ref[0]; 
var b = _ref[1]; 
var c = _ref[2]; 

a得到的第一件事情,b第二等

+0

也許我提出了我的問題。我的實際問題是爲什麼Babel以這種方式進行翻譯。我會換個話。 – Trace

+0

其實我覺得我弄錯了。測試.... –

+0

正確答案已更新...我第一次在對象中思考,而不是數組。 –