关于js用function和用class定义的类中使用eval作用域的问题

新手上路,请多包涵

为什么在用function和用class定义的类中在同一个作用域内使用eval函数结果会不一样呢?
function和class有什么区别呢?
Chrome和火狐运行结果一样

(function(){
    function A(){
        this.run=function(){
            eval("var b=0");
            //这里能输出b=0
            console.log(b)
        }
    }
    var a=new A();
    a.run();
})();
(function(){
    class A{
        run(){
            eval("var b=0");
            //这里b未定义
            console.log(b)
        }
    }
    var a=new A();
    a.run();
})();
(function(){
    class A{
        constructor(){
            this.run=function(){
                eval("var b=0");
                //这里b未定义
                console.log(b)
            }
        }
    }
    var a=new A();
    a.run();
})();
(function(){
    class A{
        constructor(){
            eval("var b=0");
            //这里b未定义
            console.log(b)
        }
    }
    var a=new A();
    a.run();
})();
阅读 2.6k
1 个回答

class 内部是是严格模式。

严格模式下 eval 的里 var 仅在内部可见。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题