本来在浏览器(Chrome 65)里直接运行会报ReferenceError错误,但是经过babel转换后,再运行,就会是undefined,这两种错误完全不一样,是说babel转换的不完全么?
转换后
本来在浏览器(Chrome 65)里直接运行会报ReferenceError错误,但是经过babel转换后,再运行,就会是undefined,这两种错误完全不一样,是说babel转换的不完全么?
转换后
因为它优先对let进行转换了(这就是为什么很多时候要对代码严谨(比如使用'use strict'),你不可以先赋值,再声明。),导致if区块内那个tmp其实是个新的变量,而且相对于es6报错,es5不会对不声明的东西报错,只会说它undefined
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
babel能力有限,不能使得转换后的ES5代码拥有块级作用域.所以这里的解决方案是把同名变量的换成名字不同的变量,从而起到同样的效果