Web前端开发|写好JS条件语句需要遵循哪些守则?_惠州前端培训学校

网络 分享 时间: 收藏本文

Web前端开发|写好JS条件语句需要遵循哪些守则?_惠州前端培训学校

写好JS条件语句需要遵循哪些守则?这是大家在学习前端的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

1、多重判断时使用 .

让我们看一下下面这个例子:

//

test() {

if ( == '' || == '') {

.log('red');

第一眼,上面这个例子看起来没问题。如果我们有更多名字叫 和 的红色水果呢?我们准备用更多的 || 来拓展条件语句吗?

我们可以用 . (.)重写条件语句。

test() {

= ['', '', '', ''];

if (.()) {

.log('red');

我们把红色的水果(red )这一判断条件提取到一个数组。这样一来,代码看起来更整洁。

2、更少的嵌套,尽早

让我们拓展上一个例子让它包含两个条件。

· 如果没有传入参数 ,抛出错误

· 接受 参数,并且在 大于 10 时打印出来

test(, ) {

= ['', '', '', ''];

// 条件 1: 必须有值

if () {

// 条件 2: 必须是red的

if (.()) {

.log('red');

// 条件 3: 大于10

if ( > 10) {

.log('big ');

} else {

new ('No !');

// 测试结果

test(null); // : No

test(''); // : red

test('', 20); // : red, big

在上面的代码, 我们有:

· 1个 if/else 语句筛选出无效的语句

· 3层if嵌套语句 (条件 1, 2 & 3)

我个人遵循的规则一般是在发现无效条件时,尽早。

/_ 当发现无效语句时,尽早 _/

test(, ) {

= ['', '', '', ''];

// 条件 1: 尽早抛出错误

if (!) new ('No !');

// 条件 2: 必须是红色的

if (.()) {

.log('red');

// 条件 3: 必须是大质量的

if ( > 10) {

.log('big ');

这样一来,我们少了一层嵌套语句。这种编码风格非常好,尤其是当你有很长的if语句的时候(想象你需要滚动到最底层才知道还有else语句sql语句中if判断条件怎么写,这并不酷)

我们可以通过 倒置判断条件 & 尽早 进一步减少if嵌套。看下面我们是怎么处理判断 条件2 的:

/_ 当发现无效语句时,尽早 _/

test(, ) {

= ['', '', '', ''];

// 条件 1: 尽早抛出错误

if (!) new ('No !');

// 条件 2: 当水果不是红色时停止继续执行

if (!.()) ;

.log('red');

// 条件 3: 必须是大质量的

if ( > 10) {

.log('big ');

通过倒置判断条件2,我们的代码避免了嵌套语句。这个技巧在我们需要进行很长的逻辑判断时是非常有用的,特别是我们希望能够在条件不满足时能够停止下来进行处理。

而且这么做并不困难。问问自己,这个版本(没有嵌套)是不是比之前的(两层条件嵌套)更好,可读性更高?

但对于我,我会保留先前的版本(包含两层嵌套)。这是因为:

· 代码比较短且直接,包含if嵌套的更清晰

· 倒置判断条件可能加重思考的负担(增加认知载荷)

因此,应当尽力减少嵌套和尽早,但不要过度。

3、使用默认参数和解构

我猜下面的代码你可能会熟悉,在中我们总是需要检查 null / 的值和指定默认值:

test(, ) {

if (!) ;

// 如果 参数没有传入,设置默认值为 1

q = || 1;

.log(`We have ${q} ${}!`);

//test

test(''); // We have 1 !

test('', 2); // We have 2 !

实际上,我们可以通过声明 默认函数参数 来消除变量 q。

test(, = 1) {

// 如果 参数没有传入,设置默认值为 1

if (!) ;

.log(`We have ${} ${}!`);

//test

test(''); // We have 1 !

test('', 2); // We have 2 !

这更加直观,不是吗?注意,每个声明都有自己的默认参数.

例如,我们也能给分配默认值: test( = '', = 1)。

如果是一个会怎么样?我们能分配一个默认参数吗?

test() {

// 当值存在时打印 的值

if ( && .name) {

.log (.name);

} else {

.log('');

//test

test(); //

test({ }); //

test({ name: '', : 'red' }); //

看上面这个例子,我们想打印 对象中可能存在的 name 属性。否则我们将打印。我们可以通过默认参数以及解构从而避免判断条件 && .name

// 解构 - 仅仅获取 name 属性

// 为其赋默认值为空对象

test({name} = {}) {

.log (name || '');

// test

test(); //

test({ }); //

test({ name: '', : 'red' }); //

由于我们只需要 name 属性,我们可以用 {name} 解构出参数,然后我们就能使用变量 name 代替 .name。

我们也需要声明空对象 {} 作为默认值。如果我们不这么做,当执行 test() 时,你将得到一个无法对 或 ull 解构的的错误。因为在 中没有 name 属性。

如果你不介意使用第三方库,这有一些方式减少null的检查:

· 使用 get函数

· 使用开源的idx库(with )

这是一个使用的例子:

test() {

// 获取属性名,如果属性名不可用,赋默认值为

.log(__.get(, 'name', '');

// test

test(); //

test({ }); //

test({ name: '', : 'red' }); //

你可以在运行demo代码。除此之外,如果你是函数式编程的粉丝,你可能选择使用 fp,的函数式版本(方法变更为get或者)。

4、倾向于对象遍历而不是语句

让我们看下面这个例子,我们想根据 打印出水果:

test() {

// 使用条件语句来寻找对应颜色的水果

() {

case 'red':

['', ''];

case '':

['', ''];

case '':

['', 'plum'];

:

[];

// test

test(null); // []

test(''); // ['', '']

上面的代码看起来没有错误,但是我找到了一些累赘。用对象遍历实现相同的结果,语法看起来更简洁:

= {

red: ['', ''],

: ['', ''],

: ['', 'plum']

};

test() {

[] || [];

或者你也可以使用 Map实现相同的结果:

= new Map()

.set('red', ['', ''])

.set('', ['', ''])

.set('', ['', 'plum']);

test() {

.get() || [];

Map是一种在 规范之后实现的对象类型,允许你存储 key 和 的值。

但我们是否应当禁止语句的使用呢?答案是不要限制你自己。从个人来说,我会尽可能的使用对象遍历,但我并不严格遵守它,而是使用对当前的场景更有意义的方式。

Todd 有一篇关于 语句对比对象遍历的更深入的文章,你可以在这个地方阅读

TL;DR; 重构语法

在上面的例子,我们能够用. 重构我们的代码sql语句中if判断条件怎么写,实现相同的效果。

= [

{ name: '', : 'red' },

{ name: '', : 'red' },

{ name: '', : '' },

{ name: '', : '' },

{ name: '', : '' },

{ name: 'plum', : '' }

];

test() {

.(f => f. == );

有着不止一种方法能够实现相同的结果,我们以上展示了 4 种。

5、对 所有/部分 判断使用. & .some

这最后一个建议更多是关于利用 的内置方法来减少代码行数。看下面的代码,我们想要检查是否所有水果都是红色:

= [

{ name: '', : 'red' },

{ name: '', : '' },

{ name: '', : '' }

];

test() {

let = true;

// 条件:所有水果都是红色

for (let f of ) {

if (!) ;

= (f. == 'red');

.log(); //

代码那么长!我们可以通过 .减少代码行数:

= [

{ name: '', : 'red' },

{ name: '', : '' },

{ name: '', : '' }

];

test() {

= .(f => f. == 'red');

.log(); //

现在更简洁了sql语句中if判断条件怎么写,不是吗?相同的方式,如果我们想测试是否存在红色的水果,我们可以使用 .some 一行代码实现。

= [

{ name: '', : 'red' },

{ name: '', : '' },

{ name: '', : '' }

];

test() {

// 条件:任何一个水果是红色

= .some(f => f. == 'red');

.log(); // true

6、总结

让我们一起生产更多可读性高的代码。我希望你能从这篇文章学到东西。

这就是所有的内容。编码快乐!

想学前端,联系在线客服,或者可以来惠州北大青鸟新方舟校区详细了解。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表本站的观点和立场和对其真实性负责。如需转载,请联系原作者。如果来源标注有误或侵犯了您的合法权益或者其他问题不想在本站发布,来信即删。

雕塑 信息流广告 竞价托管 招生通 古典文学 周易 易经 代理招生 二手车 剧本网 网络推广 自学教程 招生代理 旅游攻略 非物质文化遗产 河北信息网 石家庄人才网 买车咨询 河北人才网 招生考试 精雕图 戏曲下载 河北生活网 好书推荐 工作计划 游戏攻略 心理测试 石家庄网络推广 石家庄招聘 石家庄网络营销 培训网 好做题 游戏攻略 考研真题 代理招生 心理咨询 游戏攻略 兴趣爱好 网络知识 品牌营销 商标交易 游戏攻略 短视频代运营 张家口人才网 秦皇岛人才网 手游下载 育儿经验 PS修图 公务员考试 宝宝起名 零基础学习电脑 电商设计 职业培训 免费发布信息 服装服饰 律师咨询 搜救犬 Chat GPT中文版 语料库 范文网 工作总结 二手车估价 短视频剪辑 情侣网名 爱采购代运营 搬运熊 保定招聘 餐饮品牌 黄金回收价格 情感文案 吊车 古诗词 邯郸人才网 铁皮房 衡水人才网 石家庄点痣 微信运营 养花 名酒回收 石家庄代理记账 女士发型 搜搜作文 石家庄人才网 铜雕 关键词优化 围棋 chatGPT 读后感 玄机派 企业服务 法律咨询 chatGPT国内版 chatGPT官网 励志名言 儿童文学 河北代理记账公司 AI写作 风水运势 狗狗百科 教育培训 游戏推荐 抖音代运营 朋友圈文案 男士发型 培训招生 文玩 大可如意 石家庄招聘 保定人才网 沧州人才网 黄金回收 承德人才网 石家庄人才网 手游下载网 模型机 高度酒 沐盛有礼 公司注册 十亩地 公司起名 造纸术 唐山人才网 沐盛传媒 铜雕厂家