StmoryO_O 2017-05-19 11:16 采纳率: 100%
浏览 943
已采纳

关于es6块级作用域的问题。。。。

<!DOCTYPE html>




function f() { console.log('I am outside!'); } (function () { if (false) { function f() { console.log('I am inside!'); } } f(); }());


代码如上,若在谷歌浏览器运行,提示报错不存在函数f,这是为什么呢?

  • 写回答

2条回答 默认 最新

  • 当作看不见 2017-05-19 11:45
    关注

    这个不是es6 块级作用域,这里是变量作用域的范围

    //作用域1
    function f(){...};
    //下面是一个立即执行的块级作用域2
     (function(){
         if(false){
         //作用域2声明了f,所以f 为下面所示函数,但是由于if 跳过了,
    //  没有执行,所以f 为undefined ,也就是在同级作用域下,只要有声明,不管是否执行,系统都会认为此变量在当前作用域已经存在
        function f(){
                console.log("inside");
            }
         }
         f();
     })();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试