在javascript中我应该尽可能使用const而不是var吗?

时间:2014-09-24 11:28:00

标签: javascript node.js const var ecmascript-6

如果创建对象的引用,并且引用不会改变(即使对象会改变),那么使用const而不是var会更好吗?

例如:

const moment = require('moment')

exports.getQuotation = function(value) {

    const quotation = {};
    quotation.value = value;
    quotation.expiryDate = moment().add(7, 'days');

    // Do some other stuff with quotation perhaps

    return quotation;

};

3 个答案:

答案 0 :(得分:4)

您可以使用const,但必须在--harmony

上运行节点
node app.js --harmony

您还必须设置"use strict",否则您将遇到运行时执行问题:

exports.getQuotation = function(value) {
    "use strict";

    const I_AM_CONSTANT = {};
    let quotation = {};
    ...

除此之外,如果您在--harmony上运行节点,则是,从语义上讲,将const用于常量更有意义。对于实际变量,您应该使用let而不是var,因为let仅定义范围中的变量(避免提升问题)

答案 1 :(得分:3)

如果您查看MDN,作为参考,您可以发现它是ES6提案的一部分实验技术。它的浏览器支持有限。

来自MDN的const参考

  

这是一项实验技术,是和谐的一部分(ECMAScript 6)   提案。因为这项技术的规格尚未稳定,   检查兼容性表以了解各种浏览器的用法。另请注意   实验技术的语法和行为是主题   随着规范的变化,在未来版本的浏览器中进行更改。

所以这回答了你是否应该随处使用。 :)

此外,如果您想在不允许更改的对象中创建属性,则应检查Object.defineProperties()并使用writable属性。

答案 2 :(得分:1)

const用于变量常量,即一旦声明,它的值不应该改变,而var可以按照意愿改变。

使用constvar完全取决于您的意愿。对我而言如下

  • 如果我100%确定变量的值不会改变并且不会重新声明,我会将其定义为const。
  • 在所有其他情况下,我将使用var。

请注意,重新声明const会立即抛出错误。