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

发布于 2022-09-12 02:33:03 字数 1058 浏览 19 评论 0

为什么在用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();
})();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜心小果奶 2022-09-19 02:33:03

class 内部是是严格模式。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文