什么是变量 - JavaScript基础知识
如果将变量想象成一个“数据”的盒子,盒子上有一个唯一的标注盒子名字的贴纸。这样我们能更轻松地掌握“变量”的概念。例如,变量 message 可以被想象成一个标有 "message" 的盒子,盒子里面的值为 "你好!"。我们可以在盒子内放入任何值。并且,这个盒子的值,我们想改变多少次,就可以改变多少次。当值改变的时候,之前的数据就被从变量中删除了,我们还可以声明两个变量,然后将其中一个变量的数据拷贝到另一个变量。
下面是变量的一些说明
明确变量用途
在变量声明时,尽量明确其用途和作用域。使用let声明局部变量,确保其在当前作用域内有效。对于全局变量,考虑是否有必要使用window对象或模块化导入导出机制来管理,以避免污染全局命名空间。
避免单行多变量声明
虽然可以一行声明多个变量,但为了提高代码可读性和可维护性,建议每行只声明一个变量。这样可以清晰地看到每个变量的名称、类型和初始值,便于后续查阅和修改。
// 不推荐 let user = '唐朝', age = 20, message = '你好'; // 推荐 let user = '唐朝'; let age = 20; let message = '你好';
统一变量声明风格
选择一种团队认可的变量声明风格并保持一致。可以是每行一个变量。关键在于整个项目或代码库中要保持统一,避免混用不同风格造成混乱。
优先使用const
除非明确需要更改变量值,否则优先使用const声明变量。这样可以减少意外修改变量值导致的错误,并传达给其他开发者此变量不应被改变的信息。对于可能变化的值,再使用let声明。
// 声明常量 const COLOR_RED = "#F00"; const COLOR_GREEN = "#0F0"; // 声明可变变量 let counter = 0;
遵循变量命名约定
驼峰式命名:对于多单词组成的变量名,采用驼峰式命名。如:userName、imgName。
避免短名和无意义名称:避免使用缩写和过于简短的名称,除非它们在当前上下文中具有广泛认知和接受度。例如,避免使用a、b、c作为变量名,除非它们代表数学矩阵、数组索引等具有明确语境的含义。
有意义的名称:变量名应准确描述其所存储的数据。例如,使用userId而非简单的data或value。
团队术语一致性:确保变量命名与团队内部术语保持一致。例如,如果团队内部将网站访问者称为“用户”,则应使用olduser、newUser等相关的变量名。
避免变量重用
避免在同一作用域内重用变量存储不同类型或用途的数据。为不同数据创建新的变量,即使它们在某种程度上相关。这样做有助于提高代码可读性和可维护性,减少潜在的逻辑错误,并有利于JavaScript引擎进行优化。
使用let替代var
现代JavaScript开发中,推荐使用let和const替代var进行变量声明。var存在一些历史遗留问题,如变量提升、函数作用域等,可能导致意料之外的行为。除非是在维护旧代码库或有特定需求的情况下,否则应避免使用var。
总结
我们可以使用 var、let 或 const 声明变量来存储数据。
let — 现代的变量声明方式。
var — 老旧的变量声明方式。一般情况下,我们不会再使用它。
const — 类似于 let,但是变量的值无法被修改。
变量应当以一种容易理解变量内部是什么的方式进行命名。
扩展阅读(为什么不用var)
var 声明与 let 相似。大部分情况下,我们可以用 let 代替 var 或者 var 代替 let,都能达到预期的效果,但实际上 var 却是一头非常不同的,源自远古时代的怪兽。在现代脚本中一般不再使用它,但它仍然潜伏在旧脚本中。
var 与 let/const 有两个主要的区别:
var 声明的变量没有块级作用域,它们仅在当前函数内可见,或者全局可见(如果变量是在函数外声明的)。
var 变量声明在函数开头就会被处理(脚本启动对应全局变量)。
这些差异使 var 在大多数情况下都比 let 更糟糕。块级作用域是这么好的一个东西。这就是 let 在几年前就被写入到标准中的原因,并且现在(与 const 一起)已经成为了声明变量的主要方式。
文档如有描述不清楚、错误或者过时的地方,欢迎留言指出。
文档、教程内容会不定时更新,转载请标明原帖链接,以免让过时的教程流入网络。
