【问题标题】:NodeJS Strict ModeNodeJS 严格模式
【发布时间】:2014-07-09 00:47:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js strict


    【解决方案1】:

    嗯,清晰度和速度。

    与 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 在内部广泛使用这一点。

    参考资料:

    【讨论】:

    • witheval 在同一个例子中?我很震惊互联网没有爆炸!
    • 由于额外的清晰度,测试变得更容易。由于要求更严格,小错误(例如变量赋值)更容易被发现(例如使用 JSHint)。
    • 我真的很喜欢这个答案,它简洁明了。您花时间写了一个非常好的答案,谢谢。
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2019-07-08
    • 2011-09-11
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多