最近把代码中的大多数 var let 变量变成了 const (除了 循环计数器 和 循环枚举值)
对象没有 freeze
清除数组用 ary.length = 0
清除对象用 obj.attr = undefined
请问这样作有什么害处吗?
对象没有 freeze
清除数组用 ary.length = 0
清除对象用 obj.attr = undefined
请问这样作有什么害处吗?
|
noe132Mar 14, 2018 via Android
1
没有
|
|
zhuangzhuang1988Mar 14, 2018
2
没有
|
|
MeteorCatMar 14, 2018 via Android
3
没有
|
|
4
「清除对象用 obj.attr = undefined 」
永远不要手动赋 undefined,给 null 吧,效果一样的 |
|
crysislinuxMar 14, 2018 via Android
5
const 不合适就 let 啊,我不喜欢 arr.length. = 0 这种
|
|
wengjin456123Mar 14, 2018
6
没有
|
|
7
全 let 就可以
这种东西本来就是约束老实人的 别说 js 了 java 里各种反射 c 里各种 cast 还不是一顿魔改访问权限 我感觉这样更好 var v1 =xxx ;//谁改这个全家死 |
|
murmurMar 14, 2018
8
另外我个人感觉 对于 js 这种弱类型 var 起家的语言 用全大写下划线命名的约束力可能都比 const 强
|
|
MinonHeartMar 14, 2018
9
有
多两个字符要敲打,增加手指的压力,不利于身心健康 |
|
10
我的代码里基本没有 let,var 一个都没有,99.9%都是 const。
这个约束对于编译器来说就是个优化提示,一般没什么用处,但对于写代码的来说,是防止随意修改变量的一个防御手段。 基本不用变量就能防止一大部分 bug 了,(当然如何你没有意识到不用变量的好处,const 对你来说就是没有用的)。 |
|
11
除非是真的 const 否则建议都是 let.
动不动新起一个变量就 const 还得考虑半天我底下到底会不会在处理的过程中改掉他,然后突然发现逻辑一改还是要改一下的拖到上面去把 const 改回 let 真的是太烦人了。 最讨厌的就是有人说,你的代码里这个变量没有改啊 eslint 都会建议你把这个变量弄成 const 呢。 |
|
leemoveMar 14, 2018
13
const 挺好的啊,比起标记让别人不要改这个变量,莫不如靠规则来制约.
|
|
mcfogMar 14, 2018
14
几乎全 const 路过,要用 let 的时候我会反复怀疑是不是代码该重构了
|
|
DRcodingMar 14, 2018
15
乃们就没有动态的变量嘛,也用 const 嘛,QAQ
|
|
18
用 const 有危害吗 - 几乎没有
用着 const 但不 immutable 有危害吗 - 危害大了去了 |
|
19
最大的害处就是没法对齐, 而且常量和不可写的变量不是同一个概念, 我记得这应该属于 ECMA2015 的一个设计错误了, 远没有 var / val / let 这种设定合理, 估计因为 const 是 ECMA 的远古保留字所以才混用了吧
|
|
20
让我们来听听 eslint 怎么说
|
|
21
effective cpp 条款 03 尽可能使用 const
(我知道你们不在讨论 cpp …… |
|
MutooMar 14, 2018
22
多打两个键,手疼。
|
|
codermagefoxMar 14, 2018
23
@wwjvtwoex #12 如果我没记错的话,栈里的数据不能改变,堆里的东西可以任意操作。
|
|
brickyangMar 14, 2018 via iPhone
24
标题是「过度使用」。过度指超过应有的限度,比如不能用 const 的时候用了而导致报错。
大量(甚至几乎全部)使用 const 没什么问题,但「过度使用」是有害处的。 |
|
BlockBlockBlockMar 14, 2018 via iPhone
25
没被 var 坑过说明你们太年轻了
以及…为什么还会有 const 改回 let 的奇葩需求… 为什么我写代码的时候几百个变量里面最多也就一两个需要 let 的?而且大概率还是在 foe 循环里,或者是需要夸 try catch 作用域的情况 |
|
26
const 是我最讨厌的 es6 特性之一。约束一个变量不能被重新赋值有毛用。用了 const 很容易让人觉得这个变量是不能改的,跟 immutable 混淆。
|
|
zsxMar 14, 2018
27
我基本上只有 flag / 循环变量等地方用 let
|
|
voidcommaMar 14, 2018 via iPhone
28
能用 const 就用 const,反正不要用 var。
|
|
469054193Mar 14, 2018
29
const 基本上是 eslint 规范了
|
|
snifflesMar 14, 2018
30
一看到 const,心里就稳得不行
不像是 let,var 还要往后看是不是还会变 |
|
svenzhaoMar 14, 2018
31
@ChefIsAwesome const 声明一个只读的常量。一旦声明,常量的值就不能改变。
|
|
BlockBlockBlockMar 14, 2018
33
|
|
ke1vinMar 14, 2018
34
@SoloCompany 不能对齐怎么解释,var(let)/val 不就和 let/const 设计差不多么
|
|
IvanLi127Mar 14, 2018 via Android
36
过度?不存在的,只要不会变就应该用 const
|
|
murmurMar 14, 2018
38
@svenzhao 对啊 所以我更喜欢那种用全大写标识常量的 至少不需要 IDE 也不需要 es6 光凭直觉就知道他是常量
还是那句话 语言本身只能约束老实人 真正想改的怎么改都有一万种方法 一个弱类型预言非要添油加醋结果最后和 c 不像和 java 也不像 |
|
svenzhaoMar 14, 2018
39
@murmur 但是 js 也是要经过编译 cons let 的存在 理论上从词法分析上面就会快一些 而且也可以在程序预编译阶段暴露出很多不规范的写法.
你不能因为它本来烂就不让它往好的方向发展不然也不会有那么多人推 typescript 了. 现在 js 的项目越来越大 不论 node 还是前端 这种 var 常量某一个层级非常高的类使用了 如果被改变不报错 业务逻辑展示不正常 出现 js 的调用栈 调试成本非常高. 如果真的要冻结对象 freeze 也是可以做到的. 你要随便简单小页面那随便 出问题了 人脑也能 debug 的过来. |
|
BearD01001Mar 14, 2018 via iPhone
40
感觉 arr.length = 0 要比 arr = [] 要多敲好几个键盘 - -!
|
|
BearD01001Mar 14, 2018 via iPhone
41
优先 const,其次 let,弃用 var。
|
|
zhouygMar 14, 2018
42
多用 const 属于最佳实践的范畴
|
|
allenxMar 14, 2018
43
老夫写 cpp,能用 const 就用 const,多打几个字以后调试的时候就知道多方便了,至少 const 的变量就不用管了,const 的函数也不需要过于关心。
|
|
shylingMar 14, 2018
44
就是打字累了吧,毕竟 const 5 个字符,let var 都是 3 个(
|
|
xierchMar 14, 2018
45
所以现在有些新语言就是默认 const 的嘛
|
|
AV1Mar 14, 2018
46
尽量用,并且配合预处理工具用。
|
|
ConradGMar 14, 2018
47
简单类型建议尽可能用 const
js 由于没有 const 方法,不建议其他的对象类型使用 const |
|
48
@DRcoding const d = {var: 0}; d.var = 1; 动态,不失“优雅”
--- var a = [1,2,3]; var b = a; // 如果想要 a,b 同时保持相同的引用,const 就非常推荐用了 a = []; |
|
cccRaimMar 14, 2018
49
清除对象不应该用 delete obj.attr 吗
|
|
smilingsunMar 14, 2018
50
怎么感觉自己不是写 js 的,用 let 有什么坑吗?
|
|
otakustayMar 14, 2018
51
@BearD01001 但是 arr.length = 0 少生成一个垃圾,为 GC 争取了幸福
|
|
gnaggnoyilMar 14, 2018
52
@murmur 可是 c 里面确实不能通过 cast 来去除 const 啊,除非你把触发未定义行为也定义为"能"
|
|
DRcodingMar 15, 2018
53
@MinonHeart 握草,还有这种姿势,是万万没有想到啊,受教了感谢,另外总感觉用关键字做对象属性名字怪怪的,js 这奇怪的设定,QAQ
|
|
raighneMar 15, 2018
54
部分老安卓手机会不支持
|
|
e8c47a0dMar 19, 2018
55
唯一的害处是,代码会变得很长
|