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

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


一青
浏览 1213回答 2
2回答

林逸舟丶

我跑了下你的代码,首先两个console没有凡括号,其次最末尾有一对括号,在被添加时会报错去掉之后无报错,运行f()输出outside

林逸舟丶

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

相关分类

JavaScript