我习惯使用全部大写来声明常量值.然后我开始使用const
任何永不改变的值.突然间,大多数事情都是常数.那没问题.
但代码开始看起来非常不同.
它已被讨论过:https://softwareengineering.stackexchange.com/questions/278652/how-much-should-i-be-using-let-vs-const-in-es6
我很乐意"继续前进const
所有的事情!".我猜.我的代码周围会有很多大写字母.
但还有更多.
通过这种逻辑,所需的东西应该是常量?我从未重新分配过要求.那么,是吗?
const GULP = require('gulp'); const ESLINT = require('gulp-eslint');
进口不可重新分配,因此它应该是:
import SOMETHING from 'modules/something';
对?
我正在寻找参考资料.常量的最佳实践.有人认为这比我迄今做的更长,更好.
或者我应该选择任何选项并从那时起保持一致?
我无法找到一个讨论,至少考虑所有这些要点,以帮助我组织我的想法.然而.
仅仅因为其他语言使用大写字母表示常量,我认为这并不意味着它同样适用于JavaScript.
唯一的参数为大写字母,我能想到的是在视觉上区分有什么可以被重新分配,什么不可以.也就是说,像eslint这样的工具能够在你做类似的事情时警告你:
试图重新分配声明的变量const
(即let
改为使用).
声明一个变量,let
而不是重新分配它(即const
改为使用).
这个规则的一个例外是定义数学常数,或其他硬编码值,这些值在外部可配置是没有意义的 - 例如DECAY_RATE
,或者那种性质的东西.
一般来说,将常量大写是很常见的做法。这是一个约定,它告诉其他程序员该值是固定的。javascript关键字const
,尽管从这个意义上讲不是令人困惑的常数。我认为那是您感到困惑的地方。常数是一个概念/构造。语言中不是原始类型。您可以const
用来表示常量(应该),但并非每个const
常量都是常量:-)基本上,常量是一个变量,其值在程序执行期间不会更改或不会更改。Javascript的const
变量可以更改它,只是无法重新分配。重新分配值和更改值是两件事。
const foo = [1]; // allowed foo.pop() push(2); // not allowed foo = [];
从根本上说,它或多或少地被添加来为程序员提供某种程度较浅的不变类型。每个人都使用const,因为如果要捕获分配错误,它是最安全的变量类型,并且它的作用域像let一样。使用const
over 也有一点性能上的好处let
。
喜欢的东西,const gulp = require('gulp');
虽然用const
在这里是完美的,它不是一个常数。它是对值不断变化的函数的引用。
因此,请遵守约定,但仅当它涉及常量时。例如,如果您要构建某种html5视频播放器并提供不同的播放速度。
defaultPlaybackSpeed = 1; // Nothing wrong with this doubleSpeedMultiplier = 2; // Nothing wrong with this DEFAULT_PLAYBACK_SPEED = 1; // This though tells others this value is fixed DOUBLE_SPEED_MULTIPLIER = 2; // Same here
有趣。我在读《你不知道JS:向上和向前》一书,发现:
按照约定,JavaScript变量通常为常量,并
_
在多个单词之间使用下划线。
然后,我进行了更多研究,发现其他一些开发人员站点确实建议您使用大写字母,如MDN所说:
// NOTE: Constants can be declared with uppercase or lowercase, but a common // convention is to use all-uppercase letters. // define MY_FAV as a constant and give it the value 7 const MY_FAV = 7;
除此之外,我还注意到他们确实说这是_
单词间使用的约定。
我已经读到这是某些语言中的常见做法,但是我还没有注意到Javascript项目中以这种方式编写的代码。除此之外,我总是看到有人说JS是camelCase,这让我有些困惑。无论如何,我是新手。
我相信重要的是,您应该编写对自己和其他可能使用您的代码有用的东西。只要您与项目保持一致,并且遵循与您的团队相同的方式编写代码,我相信这是可以的。
如果您习惯于和大写_
,那么我会去:
const GULP = require('gulp'); const ESLINT = require('gulp-eslint');