NodeJS严格模式

Ste*_*her 9 javascript strict node.js

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

我觉得严格的模式与Node配对是一个好主意,但我无法通过谷歌找到它的任何优点或缺点.

免责声明:我知道是什么use strict,这个问题集中在服务器方面的优点/缺点!

Ben*_*aum 12

嗯,清晰度和速度.

不像SO中流行的答案和问题所说的那样 - 严格模式和"use strict"指令的真正主要目标是消除JavaScript中的动态范围,这就是为什么不允许更改参数arguments和更改arguments自身,为什么with不允许,等等.

明晰

严格模式不允许动态范围,因此您始终可以静态地知道变量引用的内容.with语句,通过参数更改变量和其他类型的非静态作用域使代码在非严格模式下可读性降低:

// 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
  }
}());
Run Code Online (Sandbox Code Playgroud)

在严格模式下避免这种头痛.

速度

严格模式比非严格模式快得多.一个很大的优化只能在严格的模式下进行,因为它可以承担了很多关于什么不改变,以及如何解决的引用.V8内部广泛使用它.

参考文献:

  • 在同一个例子中`with`和`eval`?我震惊了互联网没有爆炸! (4认同)