const 的过度使用有什么害处吗?

2018-03-14 10:01:43 +08:00
 wwjvtwoex
最近把代码中的大多数 var let 变量变成了 const (除了 循环计数器 和 循环枚举值)

对象没有 freeze
清除数组用 ary.length = 0
清除对象用 obj.attr = undefined

请问这样作有什么害处吗?
8110 次点击
所在节点    JavaScript
55 条回复
noe132
2018-03-14 10:03:30 +08:00
没有
zhuangzhuang1988
2018-03-14 10:05:40 +08:00
没有
MeteorCat
2018-03-14 10:06:51 +08:00
没有
viko16
2018-03-14 10:18:36 +08:00
「清除对象用 obj.attr = undefined 」
永远不要手动赋 undefined,给 null 吧,效果一样的
crysislinux
2018-03-14 10:23:58 +08:00
const 不合适就 let 啊,我不喜欢 arr.length. = 0 这种
wengjin456123
2018-03-14 10:25:09 +08:00
没有
murmur
2018-03-14 10:27:19 +08:00
全 let 就可以
这种东西本来就是约束老实人的
别说 js 了
java 里各种反射 c 里各种 cast 还不是一顿魔改访问权限
我感觉这样更好
var v1 =xxx ;//谁改这个全家死
murmur
2018-03-14 10:29:51 +08:00
另外我个人感觉 对于 js 这种弱类型 var 起家的语言 用全大写下划线命名的约束力可能都比 const 强
MinonHeart
2018-03-14 10:31:04 +08:00

多两个字符要敲打,增加手指的压力,不利于身心健康
JamesRuan
2018-03-14 10:34:28 +08:00
我的代码里基本没有 let,var 一个都没有,99.9%都是 const。
这个约束对于编译器来说就是个优化提示,一般没什么用处,但对于写代码的来说,是防止随意修改变量的一个防御手段。
基本不用变量就能防止一大部分 bug 了,(当然如何你没有意识到不用变量的好处,const 对你来说就是没有用的)。
morethansean
2018-03-14 10:41:10 +08:00
除非是真的 const 否则建议都是 let.
动不动新起一个变量就 const 还得考虑半天我底下到底会不会在处理的过程中改掉他,然后突然发现逻辑一改还是要改一下的拖到上面去把 const 改回 let 真的是太烦人了。
最讨厌的就是有人说,你的代码里这个变量没有改啊 eslint 都会建议你把这个变量弄成 const 呢。
wwjvtwoex
2018-03-14 10:41:46 +08:00
@murmur #7 js 中可以修改 const 吗 ?

例如: const answer = 42
leemove
2018-03-14 10:46:12 +08:00
const 挺好的啊,比起标记让别人不要改这个变量,莫不如靠规则来制约.
mcfog
2018-03-14 10:50:33 +08:00
几乎全 const 路过,要用 let 的时候我会反复怀疑是不是代码该重构了
DRcoding
2018-03-14 10:57:31 +08:00
乃们就没有动态的变量嘛,也用 const 嘛,QAQ
murmur
2018-03-14 10:59:44 +08:00
@wwjvtwoex babel 后有可能是可以的
我记得无论是 let 和 const 最后都要转成 var 执行吧
murmur
2018-03-14 11:01:00 +08:00
@DRcoding 这种思维是有的,当年 erlang 不就是靠无变量解决并发问题么 没有变量就不需要锁 没有锁并发自然就上去了
otakustay
2018-03-14 11:02:10 +08:00
用 const 有危害吗 - 几乎没有
用着 const 但不 immutable 有危害吗 - 危害大了去了
SoloCompany
2018-03-14 11:41:48 +08:00
最大的害处就是没法对齐, 而且常量和不可写的变量不是同一个概念, 我记得这应该属于 ECMA2015 的一个设计错误了, 远没有 var / val / let 这种设定合理, 估计因为 const 是 ECMA 的远古保留字所以才混用了吧
wivwiv
2018-03-14 11:42:11 +08:00
让我们来听听 eslint 怎么说

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

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

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

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

© 2021 V2EX