Javascript babel Transfile'let'转换为'var',运行时如何知道它应该取决于块范围

Javascript babel Transfile'let'转换为'var',运行时如何知道它应该取决于块范围,javascript,ecmascript-6,babeljs,var,let,Javascript,Ecmascript 6,Babeljs,Var,Let,在这里,babel Transfile让进入var,javascript运行时如何知道它应该依赖于块范围 代码: for(设i=10;i编译器将知道函数是否应包装在另一个函数调用中以创建自己的闭包。在您的情况下,这无关紧要,因此编译器知道不需要另一个函数调用。“javascript运行时如何知道它应取决于块范围?”不需要,因为它不需要。Babel足够聪明,可以判断您是否真的需要块作用域。在这种情况下,它知道这并不重要,因为您从未使用i,所以它只是将其替换为var。但在真正重要的情况下,它将生成一

在这里,babel Transfile
进入
var
,javascript运行时如何知道它应该依赖于块范围

代码:


for(设i=10;i编译器将知道函数是否应包装在另一个函数调用中以创建自己的闭包。在您的情况下,这无关紧要,因此编译器知道不需要另一个函数调用。

“javascript运行时如何知道它应取决于块范围?”不需要,因为它不需要。Babel足够聪明,可以判断您是否真的需要块作用域。在这种情况下,它知道这并不重要,因为您从未使用
i
,所以它只是将其替换为
var
。但在真正重要的情况下,它将生成一个非常不同的代码。请尝试粘贴
(假设i=0;i console.log(i),10);}
例如