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

9566 次点击
所在节点    程序员
99 条回复
srx1982
2018-12-20 11:50:55 +08:00
你都说“变量”了,那还用 const ?
Phariel
2018-12-20 12:23:39 +08:00
你能否把计算机编程语言的基础学习一下,变量和常量分不清吗?
akatquas
2018-12-20 12:34:57 +08:00
行末的左花括号要不要换到下一行首呢
crystom
2018-12-20 15:13:40 +08:00
@akatquas #83 不换,return 会有问题
alian
2018-12-20 15:39:48 +08:00
使用 eslint 你就会很清楚了
wangcansun
2018-12-20 16:04:37 +08:00
从我的角度看语义不同:

let 表示后面还会修改
const 表示后面不会修改了
murmur
2018-12-20 16:09:06 +08:00
highlevel 的都用钦定 let 和 const 是什么东西
dinjufen
2018-12-20 16:11:22 +08:00
同意 11 楼
v2lf
2018-12-20 18:49:04 +08:00
代码优雅 = 看起来美?
代码优雅 = 简洁 + 良好的可读性 + 最大化发挥语言的性能?
FrankHB
2018-12-20 18:53:55 +08:00
@tabris17 然而这是英语渣解。Initialization 跟 assign 从来都是两回事,let 跟 assign 甚至和保证可修改也未必有一腿,不要被 C 的渣语法和 BASIC 的渣语义忽悠了。


@Phariel 不说哪来一般人都已经分清什么常量什么变量的自信,你就那么确信“常量”“变量”有“计算机编程语言的基础”的固定含义? PL 里所谓的“变量”什么时候有资格和“常量”并列到一块了? Variable 和 immutable 不矛盾都没几个人拎清吧。像 C 这样的语言其实就没“变量”,估计十有八九也没学清楚吧。

https://github.com/FrankHB/pl-docs/blob/master/zh-CN/variables.md

说起来,学了 BASIC 就举一反三 ALGOL-like 的(例如喜闻乐见的谭×之流)还见得少了嘛?

至于 let 这坨嘛……这里还是简(瞎)单(抄)的,认真打算折腾 PL 里的?搜 administrative normal form 有·真·相。
wayneshen
2018-12-20 21:02:44 +08:00
建议看 github 上 airbnb 的代码规范
S9Yh4wIFsBG7jnE4
2018-12-20 22:20:41 +08:00
我虽然是做测试的 但是之前公司的前端同事在技术分享的时候 专门说过这个 我记得是 let 和 const 对变量的作用域是不同的
easonl
2018-12-20 22:21:37 +08:00
…… 两者用法不同啊凶弟
royzxq
2018-12-20 22:32:58 +08:00
you need tslint/eslint.
hst001
2018-12-20 22:37:47 +08:00
如果是 go,会被格式化成这样对齐:
let a = 1;
const b = 2;
reset69
2018-12-20 23:47:56 +08:00
up 说的很有道理 楼上菜鸟太多了 let vs const https://jamie.build/const
quinoa42
2018-12-21 09:26:40 +08:00
immutable 和 constant 是不一样的……
daixu
2018-12-21 09:48:32 +08:00
royzxq
2018-12-21 13:03:46 +08:00
#96 算了,讲不清的,自己理解就完事儿了, 溜了溜了。

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

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

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

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

© 2021 V2EX