NodeJS严格模式

在NodeJS中使用"use strict"使用"use strict"有什么好处吗? 例如,一个全局对象不是一个好主意,因为所有的请求都会改变这个对象(当然,假设这个对象对每个用户来说都是唯一的)。 在这种情况下,使用严格的模式将是一个好主意,不是吗?

我觉得严格模式是一个与Node配对的好主意,但我一直没有能够通过谷歌find任何优点或缺点。

免责声明:我知道use strict做什么use strict ,这个问题是关注服务器端优点/缺点!

那么,清晰度和速度。

与SO中stream行的答案和问题不同,严格模式和"use strict"指令的真正主要目标是消除JavaScript中的dynamic范围 ,这就是为什么通过arguments改变arguments和改变arguments本身是不允许的,为什么是不允许,等等。

明晰

严格模式不允许dynamic范围,因此您可以始终静态地知道variables是指什么。 with语句,通过参数和其他types的非静态作用域来更改variables,使得代码在非严格模式下可读性较差:

 // example from referenced thread // global code this.foo = 1; (function () { eval('var foo = 2'); with ({ foo: 3 }) { foo // => 3 delete foo; foo // => 2 delete foo; foo // => 1 delete foo; foo // ReferenceError } }()); 

严格的模式避免了这种头痛。

速度

严格模式比非严格模式快得多。 许多优化只能在严格模式下进行,因为它可以假定更多的不变,以及如何解决引用问题。 V8在内部广泛使用。

参考文献:

  • 仍然不确定dynamic/词汇范围是什么? 阅读@EricLippert的这篇文章
  • 这个优秀写@Domenic和它参考的讨论 。