为什么在用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();
})();
class 内部是是严格模式。
严格模式下 eval 的里 var 仅在内部可见。