【发布时间】:2017-11-21 01:03:25
【问题描述】:
如果我使用 let 关键字编写一个 for 循环来声明我的循环变量,然后将该变量传递给一个
for(let x=0;x<5;x++){
setTimeout(function(){console.log(x);},1000);
}
调用,它在 IE 11 中不起作用,因为 IE 11 不支持 ES2015。但我可以在 Typescript 中编写此代码,编译并使用 Babel 输出到所谓的 IE11 兼容代码。 Babel 会成功识别并解决这个问题吗?
我意识到,一旦我设置好环境,测试自己就相对简单,但我觉得这可能只是 Babel 能做什么和不能做什么的冰山一角。只是想知道是否有人知道这是否或如何工作,以及是否有一些与闭包相关的东西是 Babel 无法转换的。提前致谢。 - -编辑 - - 将变量“x”传递给函数实际上会产生一个未定义的错误,所以我想我在那里打破了其他一些规则。但是,在删除匿名函数参数以在“x”上创建适当的闭包后,我发现 Babel 转换没有正确记录值 0、1、2、3... 在这一点上,我想我不同意那些谁说它确实正确地转换了这种情况。或者我完全错过了一些东西。 (感谢第一个回复 babeljs.io/repl 链接的人!非常酷。)
【问题讨论】:
-
您无需设置环境即可发现这一点。您可以将有问题的代码直接放入 Babel REPL:babeljs.io/repl。我会为你做,但你没有向我们展示你正在谈论的实际代码。
-
迈克回答这个问题绝对值得称赞。请参阅下面的评论。再次感谢迈克。
标签: javascript typescript internet-explorer-11 babeljs webpack-2