为什么Firefox注入“严格使用”;在课堂方法?

时间:2016-07-05 02:20:36

标签: javascript firefox strict

我有以下代码:

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是否有理由将其注入函数中?它是以编程方式进行的吗?

1 个答案:

答案 0 :(得分:1)

  

严格模式

     

类声明和类表达式的主体以严格模式执行。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Strict_mode

非常不言自明。讨论不多。