快捷导航

如果同一段代码在es5和es6输出不同结果,那么在运行时按哪个标准?

functionf(){console.log('Iamoutside!';}(function(){if(false){functionf(){console.log('Iaminside!';}}f();}());//es5会输出Iaminside!,es6会输出Iamoutside!//那么用babel编译,最后在输出的时候是输出什么?//如果输出的是Iamoutside!,意思就是说当同一段代码出现歧义的时候,会默认采用es6吗?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

我跑了下你的代码,首先两个console没有凡括号,其次最末尾有一对括号,在被添加时会报错

去掉之后无报错,运行f()
输出outside
回复

使用道具 举报

首先,应该回答你,目前是按照es5的标准。
其次if表达式为false,按照逻辑,f()是不该被重新定义输出inside的,这显然是一个逻辑bug
最后,用babel编译,其实是把es6的较新语法转换成了es5支持的语法,所以,按照当前场景,最后会输出什么,我觉得应该是I am inside!
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP