纠结 JS 变量用 let 还是 const 定义

2018-12-19 19:40:38 +08:00
 mytry

理论上说能用 const 的地方尽量用 const 当然是最好的,但发现用了 const 之后有些地方没之前优雅了。比如某个程序有很多这样的代码:

let a = ...
if (a > 0) {
  ...
}

本来两个 a 都是工整对齐的,换成 const 变成:

const a = ...
if (a > 0) {
  ...
}

感觉没以前美观了😂

还有本来一堆变量都是 let 定义的,现在有些是 let 有些是 const 定义:

const num = arr.length;
let i = 0;

const map = {};
...

看起来也没有统一用 let 那么整齐了。。。而且有些 let 的初始值依赖 const 的值,也没法分开归类定义。。。强迫症患者表示好纠结这个问题~

9259 次点击
所在节点    程序员
99 条回复
crazykay
2018-12-19 23:38:37 +08:00
我写的时候的命名通常都比较长, 反正看起来非常不"优雅", 但是很久之后再来改代码, 不至于看不懂
Everyman
2018-12-19 23:45:13 +08:00
你是不是对优雅和强迫症有什么误解?
严格遵守规范,能用 const 用 const,不能用 const 采用 let,才叫优雅。
能用 const 用了 let,才叫必死强迫症。
lastpass
2018-12-20 00:00:28 +08:00
可以试着将对齐交给代码美化工具。自己关注于逻辑嘛。这样写的又快有好看。就有更多时间摸鱼了。(≧▽≦)
codehz
2018-12-20 00:10:24 +08:00
@Nasei #6 现在这种对齐也很常见,以至于各种格式化插件都有相关支持,比如 clang-format
zhuangzhuang1988
2018-12-20 00:14:47 +08:00
lint 打开就好了
w3cay
2018-12-20 00:16:25 +08:00
还是需求太少
Sivan
2018-12-20 00:19:08 +08:00
是我误会了,代码对齐原来是垂直对齐……🤪
Vegetable
2018-12-20 00:47:41 +08:00
js 对可变不可变约束的不是那么严格,大家观点不同正常。我是典型的 let 党。
认为应该慎用 const,相比 const 和 let,前者更多了一层约束,这种常量在代码中应该只占很小的一部分,因为他们往往有特别的含义,应该是明确的数值字符串之类或全局唯一的对象等,const 应该提示读代码的人,这是一个很关键的变量,不要尝试在运行时改变他,而不是单纯的告诉 v8 这个不能改。如果能用 const 用的太多,便失去了向人传递信息的能力了。
zhy0216
2018-12-20 00:57:50 +08:00
我们只用 const
yanaraika
2018-12-20 01:18:26 +08:00
@Vegetable 你把编译期已知的常量都用 CAPITAL_LETTER 就好了,js 里的 const 指的就是 immutable,和你说的编译期已知是两个不同的概念
CODEWEA
2018-12-20 04:38:31 +08:00
let 因为 let 就三个字母
@mytry
wdv2ly
2018-12-20 07:34:02 +08:00
那 let 和 var 区别是啥,我没学过 js,一般都是 var 到底
passerbytiny
2018-12-20 09:09:15 +08:00
可以做,并不代表你能做。

Java,final static 定义的非不可变类的常量,其内部的属性也是可变的,然而你要是敢这么用,会被打死。

JS 因为万物皆对象,所以你将一个方法赋值给 const 常量,来实现 const 定义可变值的常量的目的,在语法上是允许的。然而你真得能这样用吗?
galikeoy
2018-12-20 09:15:37 +08:00
@seki 绝壁他么缺铜币了,const or let? 都快 9102 年了 破事水
heyOhayo
2018-12-20 09:21:13 +08:00
都 9102 了,还有人问这么无聊的问题
Heroy
2018-12-20 09:21:55 +08:00
ChefIsAwesome
2018-12-20 09:25:12 +08:00
屁影响没有。现在都分模块写,一个模块文件就写那么点代码,模块导出的变量在引入时又自动变成常量,哪来的乱改常量的可能。
Terry05
2018-12-20 09:39:15 +08:00
楼主写 JS 肯定是不刷 ESLint 的,鉴定完毕
fundebug
2018-12-20 09:41:29 +08:00
《代码简洁之道》貌似没有必须对其这个说法吧。。。
ZehaiZhang
2018-12-20 09:42:13 +08:00
讲究人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/519096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX