千家信息网

编写高质量JS变量的优秀做法有哪些

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"编写高质量JS变量的优秀做法有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"编写高质量JS变量的优秀做法有哪些"吧!1.首选 con
千家信息网最后更新 2026年11月03日编写高质量JS变量的优秀做法有哪些

本篇内容主要讲解"编写高质量JS变量的优秀做法有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"编写高质量JS变量的优秀做法有哪些"吧!

1.首选 const,再 let

我使用const或let声明变量,两者之间的主要区别是const变量需要一个初始值,并且一旦初始化就无法重新分配其值。

另一方面,let声明不需要初始值,我们可以多次重新分配其值。

// const 需要初始化 const pi = 3.14; // 不能重新分配const pi = 4.89; // throws "TypeError: Assignment to constant variable"

另一方面,let声明不需要初始值,我们可以多次重新分配其值。

// let 初始化是可选的 let result; // let can be reassigned result = 14; result = result * 2;

选择变量的声明类型时的一个好习惯是首选const,否则使用let。

function myBigFunction(param1, param2) {   /* lots of stuff... */    const result = otherFunction(param1);    /* lots of stuff... */   return something; }

例如,如果我们正在查看函数体,并看到const result = ...声明:

function myBigFunction(param1, param2) {   /* lots of stuff... */    const result = otherFunction(param1);    /* lots of stuff... */   return something; }

不知道myBigFunction()内部会发生什么, 我们可以得出结论,result 变量只分配了一次,声明之后是只读的。

在其他情况下,如果必须在执行过程中多次重新分配变量,则可以使用let声明。

2.最小化变量的范围

变量存在于它们所创建的作用域内。代码块和函数体为const和let变量创建一个作用域。提高变量可读性的一个好习惯是将变量保持在最小作用域内。

例如,以下函数是二进制搜索算法的实现:

function binarySearch(array, search) {   let middle;   let middleItem;   let left = 0;   let right = array.length - 1;    while(left <= right) {     middle = Math.floor((left + right) / 2);     middleItem = array[middle];     if (middleItem === search) {        return true;      }     if (middleItem < search) {        left = middle + 1;      } else {       right = middle - 1;      }   }   return false; }  binarySearch([2, 5, 7, 9], 7); // => true binarySearch([2, 5, 7, 9], 1); // => false

middle和middleItem变量在函数体的开头声明。因此,这些变量在binarySearch()函数体创建的整个作用域内都是可用的。

middle变量保留二进制搜索的中间索引,而middleItem变量保留二进制搜索的中间索引。

但是,middle和middleItem变量只在while循环代码块中使用。所以为什么不直接在while代码块中声明这些变量呢?

function binarySearch(array, search) {   let left = 0;   let right = array.length - 1;    while(left <= right) {     const middle = Math.floor((left + right) / 2);     const middleItem = array[middle];     if (middleItem === search) {       return true;      }     if (middleItem < search) {       left = middle + 1;      } else {       right = middle - 1;      }   }   return false; }

现在,middle和middleItem变量仅存在于使用变量的作用域。他们的生命周期和生命周期极短,因此更容易推断其作用。

3.在接近位置声明变量

我强烈希望在函数主体的顶部声明所有变量,尤其是在函数较大的情况下。不幸的是,这种做法的缺点是使我在函数中使用的意图变量变得混乱。

尽量在接近使用位置的地方声明变量。这样,我们就不用猜了:嘿,我看到了这里声明的变量,但是它在哪里被使用了。

假设我们有一个函数,该函数的主体中包含很多语句。我们可以在函数的开头声明并初始化变量结果,但是只能在return语句中使用result:

function myBigFunction(param1, param2) {   const result = otherFunction(param1);   let something;    /*    * calculate something...     */    return something + result; }

问题在于result 变量在开头声明,但仅在结尾使用,没有足够的理由在开始时声明该变量。

让我们通过将result 变量声明移到return语句之前来改进这个函数

function myBigFunction(param1, param2) {   let something;    /*     * calculate something...     */    const result = otherFunction(param1);   return something + result; }

现在,result变量在函数中有了它的正确位置。

4.好的命名意味着易于阅读

从良好的变量命名的众多规则中,我区分出两个重要的规则。

第一个很简单:使用驼峰命名为变量取名,并且在命名所有变量时保持一致。

const message = 'Hello'; const isLoading = true; let count

有特殊含义的数字或字符串,变量命名通常是大写的,在单词之间加下划线,以区别于常规变量

const SECONDS_IN_MINUTE = 60; const GRAPHQL_URI = 'http://site.com/graphql';

第二条规则,在变量命名中,我认为这是最重要的:变量名称应明确无歧义地指出哪些数据保存了该变量。

以下是一些很好的变量命名示例:

let message = 'Hello'; let isLoading = true; let count;

message 名称表示此变量包含某种消息,很可能是字符串。

isLoading相同,布尔值指示加载是否在进行中。

count变量表示保存一些计数结果的数字类型变量。

选择一个明确表明其角色的变量名。

举个例子,这样就能看出区别了。假设看到了这样一个函数:

function salary(ws, r) {   let t = 0;   for (w of ws) {     t += w * r;   }   return t; }

你能总结出这个函数的作用吗?像ws、r、t、w这样的变量名几乎没有说明它们的意图。

相反,相同的函数,但使用了解释性变量命名

function calculateTotalSalary(weeksHours, ratePerHour) {   let totalSalary = 0;   for (const weekHours of weeksHours) {     const weeklySalary = weekHours * ratePerHour;     totalSalary += weeklySalary;   }   return totalSalary; }

该代码清楚地说明了它的作用。这就是良好命名的力量。

5. 引入中间变量

我比较少注释代码。我更喜欢编写代码即解释的风格,通过对变量、属性、函数和类的良好命名来表达意图。

编写自文档代码的一个好习惯是引入中间变量。在处理长表达式时很有用。

考虑以下表达式:

const sum = val1 * val2 + val3 / val4;

我们引入两个中间变量,增强长表达式的可读性:

const multiplication = val1 * val2; const division       = val3 / val4;  const sum = multiplication + division;

另外,让我们回顾一下二进制搜索实现算法:

function binarySearch(array, search) {   let left = 0;   let right = array.length - 1;    while(left <= right) {     const middle = Math.floor((left + right) / 2);     const middleItem = array[middle];     if (middleItem === search) {       return true;      }     if (middleItem < search) {       left = middle + 1;      } else {       right = middle - 1;      }   }   return false; }

这里middleItem是一个保存中间项目的中间变量。使用中间变量MiddleItem而不是直接使用项目访问器array [middle]可读性更好。

与缺少middleItem解释变量的函数版本进行比较:

function binarySearch(array, search) {   let left = 0;   let right = array.length - 1;    while(left <= right) {     const middle = Math.floor((left + right) / 2);     if (array[middle] === search) {       return true;      }     if (array[middle] < search) {       left = middle + 1;      } else {       right = middle - 1;      }   }   return false; }

这个版本,没有解释变量,可读性就比较差。

到此,相信大家对"编写高质量JS变量的优秀做法有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

变量 函数 作用 代码 分配 做法 二进制 可读性 搜索 解释 优秀 高质量 良好 位置 开头 意图 表达式 规则 语句 最小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 天津市摩尔互联网科技 广州百单互联网科技有限公司 重生之互联网科技帝国 工业互联网科技新基建 上海喔噻互联网科技 西安互联网科技公司 广西互联网科技公司 郑州华宇互联网科技 互联网科技论坛 广州优美互联网科技 厦门比较好的科技互联网公司 港股科技和互联网 崇明区互联网教育科技售后服务 互联网金融科技元年 互联网第三次科技革命特征 互联网营销推广黑科技 厦门江牛科技互联网 互联网金融运营模式中的金融科技 中国互联网公司的科技投入 湖南永感互联网科技有限公司 关于新基建和互联网科技 汇久创客互联网科技 长亮科技互联网金融 华中科技有哪些互联网大佬 佳云科技和互联网广告 赶超互联网科技 微信多开 互联网科技包装股份有限公司上市 郑州欣桑互联网科技有限公司 张家口科技产业互联网平台
0