导入模块为const和node.js中的var之间的区别

时间:2016-11-09 02:08:09

标签: 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

1 个答案:

答案 0 :(得分:11)

无论您是否将其用于requireconst表示该变量无法重新分配,而let则允许重新分配该变量。 letconst都是块作用域,而var是函数作用域。通常,大多数使用ES6兼容的东西(哪个节点v6主要与ES6兼容)建议更喜欢constlet,而不是(或很少)使用var。这倾向于提供大多数人期望的范围行为,特别是如果来自另一种语言。

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