NodeJS严格模式

时间:2014-05-20 16:22:49

标签: javascript node.js strict

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

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

免责声明:我知道use strict的作用,这个问题主要关注服务器方面的优缺点!

1 个答案:

答案 0 :(得分:12)

嗯,清晰度和速度。

与SO中流行的答案和问题不同 - 严格模式和"use strict"指令的真正主要目标是消除JavaScript中的dynamic scoping,这就是通过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
  }
}());

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

速度

严格模式比非严格模式快得多。优化的批次只能在严格模式下进行,因为它可以更多地假设未更改的内容以及如何解析引用。 V8内部广泛使用它。

参考文献: