为了账号安全,请及时绑定邮箱和手机立即绑定

关于es6的函数提升问题

关于es6的函数提升问题

慕娘5227020 2016-05-05 16:50:55
es6里面函数本身的作用域,在其所在的块级作用域之内,在网上看到这样一个例子来说明,但是调试报错。说函数f没有被定义代码如下:function f() { console.log('I am outside!'); }(function () {   if(false) {     // 重复声明一次函数f    function f() { console.log('I am inside!'); }   }   f();}());请问如何修改可以正确测试这个例子,以及怎么说明问题?
查看完整描述

1 回答

已采纳
?
风筝_0010

TA贡献45条经验 获得超15个赞

function f() {

 console.log('I am outside!'); 

}

(function (my) {

  if(false) {

   function my() { 

console.log('I am inside!'); 

}

  }

 

return my();

}(f));


查看完整回答
反对 回复 2016-05-05
  • 慕娘5227020
    慕娘5227020
    恩恩,谢谢了。我的结果是I am outside,这说明我的浏览器是按es6解析的。但之前报错的原因还是有些不明白,求解释~
  • 风筝_0010
    风筝_0010
    因为函数提升了,相当于(function () { f(); if(false) { ]function f() { console.log('I am inside!'); } } f();}());
  • 慕粉3744814
    慕粉3744814
    if(false)永远都不会执行
  • 1 回答
  • 0 关注
  • 1529 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信