我有以下代码:
class A {
contructor(){
}
toString(){
return [this.b.toString(),this.toString.toString()].join('\n');
}
b(){
}
}
console.log(new A().toString());
function a (){}
a.prototype.b = function(){
}
a.prototype.toString = function toString(){
return [a.prototype.b.toString(), a.prototype.toString.toString()].join('\n');
}
console.log(new a().toString());
Firefox中的输出是:
function b(){
"use strict";
}
function toString(){
"use strict";
return [this.b.toString(),this.toString.toString()].join('\n');
}
function (){
}
function toString(){
return [a.prototype.b.toString(), a.prototype.toString.toString()].join('\n');
}
从MDN我们可以看到“use strict”的用法:
严格模式对普通JavaScript语义进行了一些更改。 首先,严格模式消除了一些JavaScript无声错误 改变它们以抛出错误。其次,严格模式修复了错误 使JavaScript引擎难以执行优化: 有时可以使严格模式代码运行得比完全相同 代码不是严格的模式。第三,严格模式禁止一些语法 可能会在ECMAScript的未来版本中定义。
但似乎没有人是原因。 Firefox是否有理由将其注入函数中?它是以编程方式进行的吗?
答案 0 :(得分:1)
严格模式
类声明和类表达式的主体以严格模式执行。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Strict_mode
非常不言自明。讨论不多。