关于 const 的一点小研究

时间:2021-08-31 19:41:22

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

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

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

 

关于 const  的一点小研究

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

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

 

关于 const  的一点小研究

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

毕竟 name 是一个 string,不能像 object 一样添加属性

所以 info 属性是 undefined,但是也没有报错

 

关于 const  的一点小研究

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

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

 

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

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

关于 const  的一点小研究

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

 

关于 const  的一点小研究

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

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

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

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

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