JavaScript中的所有caps常量。并要求。进口

JavaScript中的所有caps常量。并要求。进口,javascript,import,constants,require,Javascript,Import,Constants,Require,我被用来用所有的大写字母声明常量值。然后我开始使用const来表示任何永不改变的值。突然间,大多数事物都是常量。没关系 但是代码开始看起来非常不同 已经有人谈论过了: 我同意“继续并执行const所有事情!”。我想是吧。我的代码周围会有很多大写字母 但还有更多 根据这个逻辑,要求的东西应该是常量?我从未重新分配过一个必需的任务。那么,是吗 const GULP = require('gulp'); const ESLINT = require('gulp-eslint'); 进口不可重新分配,

我被用来用所有的大写字母声明常量值。然后我开始使用
const
来表示任何永不改变的值。突然间,大多数事物都是常量。没关系

但是代码开始看起来非常不同

已经有人谈论过了:

我同意“继续并执行
const
所有事情!”。我想是吧。我的代码周围会有很多大写字母

但还有更多

根据这个逻辑,要求的东西应该是常量?我从未重新分配过一个必需的任务。那么,是吗

const GULP = require('gulp');
const ESLINT = require('gulp-eslint');
进口不可重新分配,因此应:

import SOMETHING from 'modules/something';
对吧?

我在找推荐人。关于常数的最佳实践。一个比我想得更久更好的人

或者我应该选择任何一个选项,并从那时起保持一致


我找不到一个至少考虑所有这些问题的讨论来帮助我组织我的想法。然而。

仅仅因为其他语言使用大写字母表示常量,我不认为这意味着JavaScript也会自动使用大写字母

我能想到的关于大写字母的唯一论点是从视觉上区分哪些可以重新分配,哪些不能。也就是说,当您执行以下操作时,eslint之类的工具能够向您发出警告:

  • 尝试重新分配用
    常量声明的变量(即使用
    代替)
  • 使用
    声明变量时,请让
    不要重新赋值(即,改用
    const
这条规则的一个例外是定义数学常数,或其他硬编码的值,这些值对于外部配置没有意义,例如衰减率或类似性质的东西。 我正在读这本书,看到:

按照惯例,JavaScript变量作为常量通常是 大写,多个单词之间带有下划线

然后我进一步研究了一下,发现其他一些开发者网站确实建议您使用大写字母,如下所示:

除此之外,我还注意到,他们确实说,在单词之间使用
是一种惯例

我已经读到,这在一些语言中是一种常见的做法,但我没有注意到Javascript项目的代码是以这种方式编写的。除此之外,我经常看到有人说JS是camelCase,所以这让我有点困惑。不管怎么说,我是新手

我相信重要的是,你为自己和其他可能使用你的代码的人编写了一些好的代码。只要您与您的项目保持一致,并且遵循您的团队编写代码的相同方式,我相信这是可以的

如果您习惯使用大写字母和
,那么我会选择:

const GULP = require('gulp');
const ESLINT = require('gulp-eslint');

一般来说,将常量大写是常见的做法。这是一个惯例,告诉其他程序员该值是固定的。javascript关键字
const
,尽管在这个意义上它不是一个常数。我想这就是你困惑的地方。常数是一个概念/构造。不是语言中的基元类型。您可以使用
const
来表示常量(您应该这样做),但并非每个
const
都是常量:-)基本上,常量是一个变量,其值在程序执行期间不会或不会改变。Javascripts'
const
变量可以更改,但不能重新分配。重新分配值和变异值是两件不同的事情

const foo = [1];
// allowed
foo.pop()
push(2);

// not allowed
foo = [];
基本上,添加它或多或少是为了给程序员一个有点浅的不可变类型。每个人都使用const,因为如果想要捕获分配错误,它是最安全的变量类型,并且它的作用域与let类似。在
let
上使用
const
还有一点性能优势

类似于
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

我认为常量的所有大写字母也基本上是为JavaScript建立的:我也不确定不变性是否与此有关。Const只是使变量不可重新分配。非常不同的事情。。。但是谢谢你!你说得很对!最近我一直在大量使用immutable.js,而且肌肉记忆太强了。。。答案更新反映了这一点。“类似于const gulp=require('gulp');虽然在这里使用const是完美的,但它不是一个常数。它是对具有不断变化的值的函数的引用。”+1。在选择常数的情况下,考虑字段是否真的感觉像是一个不可改变的常数。
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