“变量'X'可以保持不变”,“常数”是什么意思?

时间:2015-06-07 08:43:24

标签: typescript resharper ecmascript-6

VStudio或ReSharper给出了以下建议:

enter image description here

在这种情况下,常数意味着什么?如果它是当前方法范围中的常量,那么目的是什么?方法往往很小,因此与常规变量相比,它不应该具有任何优势。

请加冕我

1 个答案:

答案 0 :(得分:7)

这并不复杂。

使用const而不是let(绝对是var)总是更好,因为const使其他编码器更容易一些,或者当你回到相同的代码时在将来,要了解正在发生的事情,因为您只需要查看初始分配以了解变量的内容。因此,我们鼓励您尽可能使用它。

应该注意的是,虽然常量不能重新分配,但它们的内容可以。所以const x = [1]; x[0] = 2;是完全有效的代码,但它是一个明确的反模式,因为人们应该期望一个常数保持不变。如果您想使用更复杂的数据结构,请查看ImmutableJs或其他允许您使用不可变数据结构的库。

您可以在此处varlet vs const进行效果测试:https://jsperf.com/let-vs-var-performance/35。在我的笔记本电脑OSX 10.10.2上使用Firefox 38 const比var(最快)慢3%,而Chrome 43 constvar慢1.28%。表明仍有一些优化工作要做。请注意,此性能测试中的const正在函数范围内使用。

请记住,constlet是ECMAScript 2015标准的一部分。因此,当使用constlet并向下转换为较旧的ECMAScript目标时,实际上没有性能差异,因为constlet只是转换为旧的var }。