【问题标题】:Using const for requiring a module使用 const 要求模块
【发布时间】:2017-08-29 18:52:20
【问题描述】:

在我的一个 NodeJS 应用程序中,我注意到以下代码;

const { Function } = require('./modules/helpers.js')

这有效吗?将 const 用于 require 有什么好处?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    是的,destructuring assignment 是一个有效的语法:

    解构赋值语法是一种 JavaScript 表达式,它可以将数组中的值或对象中的属性解包到不同的变量中。

    ({a, b} = {a: 10, b: 20});
    console.log(a); // 10
    console.log(b); // 20
    

    见:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

    编辑:

    至于好处,它在大多数情况下是一种语法糖。它允许您将导入函数直接引用为Function 而不是Helper.Function

    也可以reduce your bundle.js file size

    【讨论】:

    • 这里使用“const”还有什么意义吗?
    • 向下滚动链接中的文章以寻找答案....是的。
    • 这是 ES6 的一个新特性。从 ES6 开始,requires 最好使用const,这样导入的函数就无法更改。但是,const 不会使对象不可变。
    【解决方案2】:

    使用const 对您自己有一些重大改进。所以你不能再改变你导入的模块了。这个导入的模块就是所谓的immutable,这在某些方面确实很好。更多内容请看这里:Short Introduction into immutable data structures

    编辑const 并不真正意味着值不再可更改,而是意味着此时无法重新分配对象。 (感谢@Mark Stosberg 再次指出这一点)

    (只是代码更容易推理,而且代码风格很好)

    语法是有效的 ES6 破坏语法。确保您的模块导出了一个名为 Function 的变量。更多信息请看这里:MDN Destruction Syntax

    【讨论】:

    • 导入的模块保持可变。来自official docs for const const 声明创建了一个对值的只读引用。这并不意味着它所持有的值是不可变的,只是不能重新分配变量标识符。
    猜你喜欢
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多