2024年Web前端最新写高质量 JS 变量的5种最佳做法(2),三年经验前端开发面经总结

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

} else {

right = middle - 1;

}

}

return false;

}

binarySearch([2, 5, 7, 9], 7); // => true

binarySearch([2, 5, 7, 9], 1); // => false

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

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

但是,middlemiddleItem变量只在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;

}

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

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;

}

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

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

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解释变量的函数版本进行比较:

Vue 编码基础

2.1.1. 组件规范

2.1.2. 模板中使用简单的表达式

2.1.3 指令都使用缩写形式

2.1.4 标签顺序保持一致

2.1.5 必须为 v-for 设置键值 key

2.1.6 v-show 与 v-if 选择

2.1.7 script 标签内部结构顺序

2.1.8 Vue Router 规范

Vue 项目目录规范

2.2.1 基础

2.2.2 使用 Vue-cli 脚手架

2.2.3 目录说明

2.2.4注释说明

2.2.5 其他

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

模板中使用简单的表达式

2.1.3 指令都使用缩写形式

2.1.4 标签顺序保持一致

2.1.5 必须为 v-for 设置键值 key

2.1.6 v-show 与 v-if 选择

2.1.7 script 标签内部结构顺序

2.1.8 Vue Router 规范

Vue 项目目录规范

2.2.1 基础

2.2.2 使用 Vue-cli 脚手架

2.2.3 目录说明

2.2.4注释说明

2.2.5 其他

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值