猿问

初学es6有一些 babel 转换的疑问

本来在浏览器(Chrome 65)里直接运行会报ReferenceError错误,但是经过babel转换后,再运行,就会是undefined,这两种错误完全不一样,是说babel转换的不完全么?

转换后

https://img4.mukewang.com/5c961fc60001f61302120093.jpg

收到一只叮咚
浏览 594回答 3
微课
3回答

红糖糍粑

转换后变量名都不一样了,一个是tmp,一个是_tmp。并且是var定义的,变量提升,打印_tmp就是undefined

HUWWW

因为它优先对let进行转换了(这就是为什么很多时候要对代码严谨(比如使用'use strict'),你不可以先赋值,再声明。),导致if区块内那个tmp其实是个新的变量,而且相对于es6报错,es5不会对不声明的东西报错,只会说它undefined
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答