纠结 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 的值,也没法分开归类定义。。。强迫症患者表示好纠结这个问题~

9486 次点击
所在节点    程序员
99 条回复
lscho
2018-12-19 20:18:12 +08:00
能用 const 的尽量用 const
Mutoo
2018-12-19 20:21:09 +08:00
人生苦短,我用 let (可以少打两个字母)
mytry
2018-12-19 20:44:47 +08:00
见过个最极端的,把 for 循环因子都用 const,大概是这么实现的。。。

```js
function* range(beg, end, step = 1) {
for (let i = 0; i < end; i += step)
yield i;
}

for (const i of range(0, 10, 2)) {
console.log(i);
}
```
Jasonwxy
2018-12-19 20:46:37 +08:00
这有什么好纠结的。。我都是用 const,如果某个变量之后可能要变化,就用 let。我之前也强迫症,一下升级了全部项目依赖。。然后,之后升级依赖都小心翼翼的。。
autoxbc
2018-12-19 21:08:31 +08:00
统计了一下自己的小项目,const 和 let 的用量是 14:1
aleung
2018-12-19 21:20:50 +08:00
代码里尽可能使用 const,而不用 let。

特别是使用 lodash 之类的函数库辅助之后,你会发现很少情况下非用 let 不可。做到这点,是函数式编程的初级阶段。
AlloVince
2018-12-19 21:26:37 +08:00
dcatfly
2018-12-19 21:28:26 +08:00
看到楼主第一段代码的工整对齐。。我笑了。。
seki
2018-12-19 21:29:37 +08:00
需要重定义就用 let,不需要重定义就是 const
看了一下楼主的发帖记录,觉得可能是缺铜币了
Wincer
2018-12-19 21:47:16 +08:00
楼主这么纠结建议使用 Typescript,编译器会告诉你什么时候该用 const
mytry
2018-12-19 21:49:54 +08:00
@Wincer ts 都用了快 7、8 年了,试验版就开始用~ 然而并不会提示,只是给 const 赋值会报错而已。
mytry
2018-12-19 21:51:13 +08:00
应该没有 7 8 年,之前用的是一种奇怪的强类型语言叫 haxe...
airyland
2018-12-19 21:56:42 +08:00
楼主重新定义了代码对齐。。
Nick66
2018-12-19 21:58:00 +08:00
你该重新学习 es6 语法了
ydirel
2018-12-19 22:01:42 +08:00
eslint 了解一下
FakeLeung
2018-12-19 22:01:52 +08:00
let 是用于定义会修改变量。const 用于定义不会被改变的。改变指的是内存地址。不一定是值。
a62527776a
2018-12-19 22:04:32 +08:00
???
Wincer
2018-12-19 22:10:57 +08:00
@mytry tslint 会告诉
emmmlucky
2018-12-19 23:31:26 +08:00
建议使用 eslint 或 tslint,let 定义的变量之后没有重新赋值就会报错。
belin520
2018-12-19 23:35:20 +08:00
建议楼主重新学习下 const 和 let 的用法再来思考你的疑惑

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

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

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

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

© 2021 V2EX