关于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();
})();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
class 内部是是严格模式。
严格模式下 eval 的里 var 仅在内部可见。