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

jga*_*fin 4 resharper typescript ecmascript-6

VStudio或ReSharper给出了以下建议:

在此输入图像描述

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

请赐福我

Lod*_*rds 7

这并不复杂.

使用constover let(并且绝对var)总是更好,因为const使其他编码器更容易,或者当你将来回到相同的代码时,你可以理解发生了什么,因为你只需要看一下知道变量内容的初始赋值.因此,我们鼓励您尽可能使用它.

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

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

请记住,const并且let是2015年的ECMAScript标准的一部分.因此,当使用constlet转换为较旧的ECMAScript目标时,实际上没有性能差异,因为const并且let只是转化为旧的var.