node.js - 在 node.js 中将模块导入为 const 和 var 的区别

标签 node.js declaration require node-modules

我正在为 node.js 使用 mqtt 客户端

在这个链接上 https://blog.risingstack.com/getting-started-with-nodejs-and-mqtt/ , mqtt模块是这样导入的;

const mqtt = require('mqtt')  
const client = mqtt.connect('mqtt://broker.hivemq.com')

我导入模块的方式是这样的;

var mqtt = require('mqtt')  
var client = mqtt.connect('mqtt://broker.hivemq.com')

var 和 const 这两种方式有什么区别?如果我以这种方式导入会怎样;

let mqtt = require('mqtt')  
let client = mqtt.connect('mqtt://broker.hivemq.com')

重要吗?哪种编程方式才是正确的?

我正在使用 node.js v6

最佳答案

不管你是否将它用于requireconst 意味着变量不能被重新赋值,而let 允许它被重新分配。 letconst 都是 block 作用域,而 var 是函数作用域。通常,大多数使用兼容 ES6 的东西( Node v6 大部分兼容 ES6)的人建议更喜欢 constlet 并且从不(或很少)使用 var。这往往会提供大多数人期望的作用域行为,特别是如果来自另一种语言。

对于您的 require 语句,我想不出您想要重新分配这些变量的情况,因此 const 应该是首选方法。

关于node.js - 在 node.js 中将模块导入为 const 和 var 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499345/

相关文章:

node.js - 无法连接 MFQ :1433 nodejs

node.js - Jade 中的 Foreach 循环(node.js 模板引擎)

ios - 条件声明 Swift 上的数组索引超出范围错误

c# - 如何声明 QueryFullProcessImageName() API C# (Windows 7 x64)

javascript - 如何处理多个文件?

javascript - NPM 不工作(找不到模块 'internal/fs' - nodejs)

PHP - MySQL 安全问题?

php - 将参数传递给 php include/require 构造

c++ - main.cpp : function in library "not declared in this scope", 错误但实际上是

racket - 运行测试子模块作为主钩子(Hook)