首页 > 其他 > 详细

prefer-const

时间:2018-05-21 20:16:05      阅读:217      评论:0      收藏:0      [点我收藏+]

https://eslint.org/docs/rules/prefer-const

https://www.zhihu.com/question/60625915

https://reactjs.org/tutorial/tutorial.html#storing-a-history

今天在看react官方的Tutorial时,发现demo里大多数地方用的都是const而不是let,让我困惑不已!!!!虽然demo里被const标记的变量都是引用类型的,语法上并不会报错,

但是从字面上看const 是代表常量——不变的意思,官方这样写不怕读者感到奇异吗?

 

于是在网上搜了一些资料,才发现:

原则应该是:能用 const 就应该用 const。比如开启 eslint 的 prefer-const 的 rule。

有一些人,因为觉得 const 表示常量,而实际上并不是常量,所以认为不应该用。这是一种因果倒置

固然在一些语言里,const 表示的是编译期常量,但是也有不少语言里 const 表示的就是不可变,和 js 里的 const 意义是一致的。比如 C++。

我虽然确实认为 js 用 const 关键字表达这个语义(以及用 let 表示可变)不是最佳选择(我认为最佳选择是用 let 表示不可变,用 let var 表示可变),但是毕竟这只是一个语法上的小节,对程序员来说,并没有什么难以掌握的。

如果说,使用了 const 产生误解,说明(误解它的程序员)没有正确理解 const 的语义。正确的对策是教育,而不是迁就

至于说还想表达 immutable array / object,目前在原生 js 里没有很好的办法(虽然可以用 Object.freeze/seal 之类的),确实如此。但是缺乏某一种特性难以构成不使用另一种特性的理由。况且如果真的认为这意义重大,可以用 typescript(readonly 类型)。

以上。

 

正确的逻辑应该是:
你认为它不应该被重新定义,使用const;
你需要它完全不可改变,用Object.freeze或者typescript的readonly;

而不是:
我希望它不可变,然而用const之后它还是可变,所以不用const

理解它的语义,并用正确的关键词做正确的事。



prefer-const

原文:https://www.cnblogs.com/purple1/p/9069044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!