我最近在JavaScript中遇到了const关键字.据我所知,它用于创建immutable variables,我已经测试以确保它不能被重新定义(在Node.js中):

const x = 'const';
const x = 'not-const';

// Will give an error: 'constant 'x' has already been defined'

我意识到它还没有在所有浏览器上标准化-但我只对Node.js V8的上下文感兴趣,我注意到当var关键字可以达到同样的效果时,某些developers / projects似乎非常喜欢它.

  • 什么时候用const代替var合适?
  • 它是否应该每次使用一个变量
  • 如果用var代替var,真的有什么区别吗

推荐答案

你的问题有两个方面:使用const而不是var的技术方面是什么,以及这样做与人有关的方面是什么.

技术上的差异是显著的.在编译语言中,常量将在编译时被替换,它的使用将允许进行其他优化,如删除死代码,以进一步提高代码的运行效率.最近的JavaScript引擎(不太常用的术语)实际上编译JS代码以获得更好的性能,因此使用const关键字会告诉他们上述优化是可能的,应该进行.这会带来更好的性能.

与人类相关的方面是关于关键字的语义.变量是包含预期会更改的信息的数据 struct .常量是一种数据 struct ,包含永远不会改变的信息.如果存在误差,则应始终使用var.然而,并非所有在程序生命周期内不会改变的信息都需要用const声明.如果在不同的情况下信息应该更改,使用var来表示,即使实际的更改没有出现在代码中.

Javascript相关问答推荐

如何通过onClick为一组按钮分配功能;

对象和数字减法会抵消浏览器js中的数字

当在select中 Select 选项时,我必须禁用不匹配的 Select

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

在JavaScript中声明自定义内置元素不起作用

空的结果抓取网站与Fetch和Cheerio

Promise Chain中的第二个useState不更新

为什么按钮会随浮动属性一起移动?

如何在 cypress 中使用静态嵌套循环

使用Promise.All并发解决时,每个promise 的线性时间增加?

将核心模块导入另一个组件模块时存在多个主题

单个HTML中的多个HTML文件

如何创建返回不带`new`关键字的实例的类

如何在不影响隐式类型的情况下将类型分配给对象?

400 bad request error posting through node-fetch

如何确保预订系统跨不同时区的日期时间处理一致?

删除加载页面时不存在的元素(JavaScript)

判断函数参数的类型

Plotly.js栏为x轴栏添加辅助文本

是否有静态版本的`instanceof`?