鍍金池/ 問答/HTML/ 初學es6有一些 babel 轉換的疑問

初學es6有一些 babel 轉換的疑問

本來在瀏覽器(Chrome 65)里直接運行會報ReferenceError錯誤,但是經過babel轉換后,再運行,就會是undefined,這兩種錯誤完全不一樣,是說babel轉換的不完全么?

clipboard.png

轉換后

clipboard.png

回答
編輯回答
舊時光

babel能力有限,不能使得轉換后的ES5代碼擁有塊級作用域.所以這里的解決方案是把同名變量的換成名字不同的變量,從而起到同樣的效果

2017年6月8日 00:23
編輯回答
萌小萌

不好意思三位,剛剛貼錯轉換后的代碼了...現在修正了

2018年1月26日 16:15
編輯回答
只愛你

因為它優(yōu)先對let進行轉換了(這就是為什么很多時候要對代碼嚴謹(比如使用'use strict'),你不可以先賦值,再聲明。),導致if區(qū)塊內那個tmp其實是個新的變量,而且相對于es6報錯,es5不會對不聲明的東西報錯,只會說它undefined

2018年7月19日 01:06
編輯回答
筱饞貓

轉換后變量名都不一樣了,一個是tmp,一個是_tmp。并且是var定義的,變量提升,打印_tmp就是undefined

2017年10月8日 20:56