【问题标题】:Will let statements bloat Babel-transpiled code?会让语句膨胀 Babel 转译的代码吗?
【发布时间】:2015-11-27 02:28:44
【问题描述】:

Eslint 建议使用let 而不是var。但是我假设 Babel 将 let 转换为 function() {...} 或类似的东西,如果我在任何地方都使用 let,这可能会导致很多膨胀。有人知道吗?我应该担心吗?

【问题讨论】:

  • 你试过了吗?不,Babel 通常不会将 let 转换为函数。
  • 它只会在必要时使用函数,例如带有捕获变量的 for 循环。

标签: ecmascript-6 var babeljs let


【解决方案1】:

看起来它的转换效率很高:

原文:

for (let a = 0; a < 5; a++) {

}

for (let a = 1; a < 5; a++) {

}

var a = 7;

console.log(a);

转译:

for (var _a = 0; _a < 5; _a++) {}

for (var _a2 = 1; _a2 < 5; _a2++) {}

var a = 7;
console.log(a);

【讨论】:

  • 下划线如何保持变量块的作用域?
  • @DavidC 啊,不是下划线,是变量重命名。请注意,在原始代码中有三个不同的 a 变量,在转译代码中,一个已重命名为 _a,另一个重命名为 _a2,这样它们就不会发生冲突。我猜使用下划线只是 Babel 的设计决定。
  • 啊,我明白了。我没有注意到它们都不同。
猜你喜欢
  • 2014-06-11
  • 1970-01-01
  • 2014-09-20
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
相关资源
最近更新 更多