在這個簡單的巴別塔(6.1.18)例如babel --presets es2015 test.js
變換:爲什麼巴貝爾6部分(不必要的)代碼轉換
'use strict'; // enable strict mode
(function() {
const A = 3;
}());
到
'use strict' // enable strict mode
;
(function() {
var A = 3;
})();
這主要是出於好奇,但我會有興趣更好地理解爲什麼: - 第一行中分號的位置已被移入單獨的行 - 生命的語法已從(function() {}());
更改爲(function() {})();
它不是真的決定轉換此代碼,因爲它可以保持原樣......這就是巴貝爾總是使用特定的語法來輸出特定的結構。您的輸入被解構爲一個抽象的語法樹,然後重新組裝成Javascript代碼。這裏的「彙編程序」被硬編碼以輸出這些特定的情況。就這樣。你可能會問,爲什麼它以這種特定的格式輸出東西,但是擔心爲什麼這個輸入具體轉換爲特定的輸出是沒有意義的。 – deceze