首页 > 代码库 > 关于 const 的一点小研究

关于 const 的一点小研究

在饱受 var 的折磨之后,ES6 终于推出了新的定义变量的方法:let 和 const

和 var 相比,let 和 const 有了自己的作用域,let 用于定义变量,而 const 用于定义常量

但在实际工作中,它们常常有一些出人意料的表现,今天就先说说 “常量” const

 

技术分享

上面的示例十分很常见,也很容易理解。作为一个常量,定义之后是不能再次定义的

但是如果换一种方式...

 

技术分享

在定义了常量 name 之后,没有重定义 name,而是增加一个 info 属性

虽然这个 info 属性并没有定义成功,但是也没有像上面那样报错

 

技术分享

刚才定义的 name 一直是 string 类型,现在换成 array

可以看到,给 array 类型添加的 info 属性,居然赋值成功了

 

我们知道 JavaScript 中的 array 和 object 一直傻傻分不清

所以当 name 为 object 类型的时候...

技术分享

一个 object 类型的 “常量”,修改起来竟然毫无压力原来你是这样的常量

 

技术分享

好在 const 还是守住了一个常量的底线

即使是 object 类型,在直接重定义的时候还是会报错

但是只要不重定义,针对 object 类型就可以随意修改了

所以在项目中,使用 const 的时候需要格外注意,不要被 “常量” 的名头给唬住

不要问我是怎么发现这个问题的...

 

关于 const 的一点小研究