优化JS代码的34种方法(上)

1. 含有多个条件的if语句

//longhand
if(x === 'abc' || x === 'def' || x === 'ghi' || x == 'jkl'){//logic
}//shorthand
if(['abc','def','ghi','jkl'].includes(x)){//logic
}

2. if…else的缩写法

当我们在if-else条件下的逻辑比较简单时,我们可以使用三元条件运算符。

//longhand
let test:boolean;
if(x > 100){test = true
}else{test = false
}
//shorthand
let test = (x > 10) ? true : false;//or we can use directly
let test = x > 10;console.log(test);

如果包含嵌套条件,也可以使用这种方法。

let x = 300;
test2 = (x > 100) ? 'greater 100' : (x < 50) ? 'less 50' : 'between 50 and 100'console.log(tet2);//'greater 100'

3. 定义变量

当我们想要定义两个变量,并且这两个变量拥有相的值或者类型的话,我们可以运用这种简略的表达方式。

// longhand
let test = 1;
let test2 = 3;//shorthand
let test1, test2 = 1;

4. 关于Null,undefined的检查

当我们创建新的变量时,有时候需要检查我们引用变量的值是否为null,或是否是undefined,js本身就有一种缩写法能实现这个功能。

//longhand
if(test !== null || test1 !== undefined || test !== '' ){let test2 = test1;
}//shorthand
let test2 = test1 || '';

5. Null检查与指定默认值

let test1 = null, test2 = test || '';
conosle.log('null check',test2);//output will be ""

6. Undefined值检查与默认赋值

let test1 = undefined ,test2 = test1 || ''
console.log("undefined check",test2);//output will be ""

正常值检查

let test1 = 'test',test2 = test1 || ''
console.log(test2);//output:'test'

7.聚合运算符

?? 是聚合运算符,如果左值为null或undefined, 就返回右值。默认值返回左值。

const test = null ?? 'default';
console.log(test);
// expected output : 'default' const test1 = 0 ?? 2;
console.log(test1);
//expected output:0;

8. 为多个变量赋值

当我们处理多个变量,想为不同的变量赋不同的值时,就会发现这种简略的表达方式的实用之处了。

// longhand
let test1 , test2 , test3;
test1 = 1;
test2 = 2;
test3 = 3;//shorthangd
let [test1, test2, test3] = [1,2,3]

9. 赋值运算符简略的表达方式

通常,我们会在程序中处理大量的算术运算符。而对于JavaScript变量的赋值运算符来说,这是其中一个实用的技巧。

//longhand
test1 = test1 + 1;
test2 = test2 - 1;
test3 = test3 * 20;//shorthand
test1++;
test2--;
test3*=20;

10. 判断变量是否存在的缩写法

这是我们工作中常用的缩写表达方式之一,如今它仍然值得被提起。

// langhand
if(tets === true) or if(test !== "") or if(test !== null)//shorthand
if(test1)

注意:如果test1有任何值,程序都会执行if(test1){} 内的逻辑,这种写法在判断NULL或undefined值时普遍使用。

11. 多种条件下的与(&&)运算符

如果我们只在变量为true的时候调用函数,那么我们就可以运用&&运算符。

//longhand
if(test1){callMethod();
}//shorthand
tets1 && callMethod();

12. foreach循环简略的表达方式

这是迭代常用的简略的表达方式技巧之一。

//longhand
for(var i = 0; i<testData.length; i++)//shorthand
for(let i in testData) or for(let i in testData)

每个变量的数组

function testData(element,index,array){console.log('test['+index+']='+element);
}
[11,24,32].forEach(testData);
//log:test[0] = 11,test[1] = 24, test[2] = 32

13. 比较结果的返回值

在return语句中,我们也可以使用比较的语句。这样,原来需要5行代码才能实现的功能,现在只需要1行,大大减少了代码量。

// langhand
let test;
function chechReturn(){if(!(test === undefined)){return test;}else{return callMe('test');}
}
var data = checkReturn();
console.log(data);//output testfunction callMe(val){console.log(val)
}//shorthand
function checkReturn(){return test || callMe('test')
}

14. 箭头函数

//longhand
function add(a,b){return a + b;
}//shorthand
const add = (a,b) => a + b; 

更多实例如下

function callMe(){console.log("Hello",name);
}
callMe = name => console.log("Hello", name);

15. 调用短函数

我们可以运用三元运算符实现如下功能

// longhand
function test1(){console.log('test');
}
function test2(){console.log('test2')
}
var test3 = 1;
if(test3 == 1){tet(1);
}else{test2()
}//shorthand
(test3 === 1 ? tets1 : test2)();

写在最后

以上就是今天的干货分享内容**《使用现代JavaScript技术优化代码的34种方法(上)》**

转载自:小渡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

稀疏表示

稀疏表示是近期几年信号处理领域的热点之中的一个&#xff0c;简单来说&#xff0c;它事实上是一种对原始信号的分解过程&#xff0c;该分解过程借助一个事先得到的字典&#xff08;也有人称之为过完备基&#xff0c;overcomplete basis&#xff0c;后面会介绍到&#xff09;&a…

一对一,一对多,多对多查询 (注解写法)

目录1、实体2、一对一3、一对多4、多对多5、测试核心&#xff1a; 一对一&#xff0c;注解&#xff1a;Select Results Result One 一对多 & 多对多&#xff0c;One改为Many共同的操作&#xff1a;查询多表时&#xff0c;先查一个表&#xff0c; 把这个实体属性作为查询条件…

Linux内核中影响tcp三次握手的一些协议配置

在Linux的发行版本中&#xff0c;都存在一个/proc/目录&#xff0c;有的也称它为Proc文件系统。在 /proc 虚拟文件系统中存在一些可调节的内核参数。这个文件系统中的每个文件都表示一个或多个参数&#xff0c;它们可以通过 cat 工具进行读取&#xff0c;或使用 echo 命令进行修…

ssm整合 durid数据源 报错java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘

目录1、报错原因2、如何解决1、报错原因 连接数据库账号密码错误… 但我在jdbc.properties中检查账号&#xff0c; 密码都是正确的呀&#xff0c;&#x1f623; drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis_study?serverTimezoneGMT usernamer…

CS无线电语

〔Radio Commands (" Z "键) - 无线电指令〕1."Cover me" (掩护我)2."You Take The Point"(你守住这个位置)3."Hold This Position"(各单位保持现在的位置)4."REGROUP TEAM"(重新组队)&#xff0c;队友过于分散的时候可以用…

ssm整合 报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):xxx

目录1. 报错原因2. 解决3. 说明1. 报错原因 使用MapperScannerConfigurer扫描对应的mapper接口&#xff0c;帮我把mapper放入spring容器中&#xff0c;但是我的mapper映射文件并没有关联到sessionFactory中。 加载mybatis核心配置文件时&#xff0c; 其中的环境&#xff0c;数…

Teradata Fastload 使用方法

第一步&#xff1a; 首先打开 teradata fastload.exe 第二步&#xff1a; 通过粘贴导入脚本 脚本&#xff1a; SESSIONS 4; ERRLIMIT 25; SET RECORD VARTEXT ",";LOGON localhost/Teradata_Education,Educate; /* localhost:IP Address; Teradata_Education:user…

linux编译警告 will be initialized after

http://blog.chinaunix.net/uid-17019762-id-3152012.html 作为一个有强迫症的人&#xff0c;实在是受不了 warning 的存在 这个warning是由于初始化顺序引起的, // 会出现warning 的代码&#xff01;class cInit{public: cInit(std::string str, int a) : str_(str), a_(a…

Java实现邮箱发送(阿里云邮箱推送)

Java mail邮箱发送1. 邮箱信息实体类2. jar包依赖3. 发送邮箱实现绑定阿里云域名&#xff0c;创建域名账户&#xff0c;并配置解析域名账户&#xff0c;获得发送邮箱的权限&#xff0c;上限两百封&#xff0c;超出要&#xffe5;… 阿里云邮件推送控制台https://www.aliyun.co…

Android组件系列----BroadcastReceiver广播接收器

​【声明】 欢迎转载&#xff0c;但请保留文章原始出处→_→ 生命壹号&#xff1a;http://www.cnblogs.com/smyhvae/ 文章来源&#xff1a;http://www.cnblogs.com/smyhvae/p/3960623.html 【正文】 一、广播的功能和特征 广播的生命周期很短&#xff0c;经过调用对象-->…

vue.js 入门,简介

vue的源代码下载——开发版本和生产版本 https://cn.vuejs.org/js/vue.jshttps://cn.vuejs.org/js/vue.min.js vue中文学习官网 https://cn.vuejs.org/v2/guide/ vue学习入门1. 什么是vue.js2. vue的要学的核心3. 我的第一个vue程序(&#xffe3;▽&#xffe3;)"1. 什么…

项目开发--高级功能汇总

祭奠曾经逝去的青春…… 1.高级功能汇总-->Memcached之ASP.NET实现 2.高级功能汇总-->HubbleDotNet软件安装转载于:https://www.cnblogs.com/dmeiyang002/p/3961520.html

vue中的数据单向绑定,判断,循环,函数

vue基本语法1. 前言2. 数据绑定v-bind3. v-if || v-else-if || v-else 条件判断4. v-for 循环5. v-on 元素监听事件1. 前言 vue语法&#xff0c;基本照着官网的来的&#xff0c;也有一些看了b站某kuang的视频&#xff0c;受了些启发。 <div id"app">// 取dat…

Asp.Net MVC4入门指南(5):从控制器访问数据模型

在本节中&#xff0c;您将创建一个新的MoviesController类&#xff0c;并在这个Controller类里编写代码来取得电影数据&#xff0c;并使用视图模板将数据展示在浏览器里。 在开始下一步前&#xff0c;先Build一下应用程序(生成应用程序)(确保应用程序编译没有问题) 用鼠标右键单…

vue双向数据绑定v-model绑定单选框,复选框,下拉框

v-model使用1. 简单的demo2. 三种框的绑定注意它是自动帮你确认值的&#xff01;&#xff01;&#xff01;无需关心过程&#xff0c;把json数据一丢到data中&#xff0c;自动选中。1. 简单的demo 实现一边在输入框输入&#xff0c;一边显示输入框的内容 2. 三种框的绑定 &l…

WebApp基础01-设置读取assets目录下文件

要读取assets下的目录&#xff0c;只需要修改三个地方即可 1.res/layout/activity_main.xml 2.AndroidManifest.xml 3.src\com\example\lcy\MainActivity.java 第一步.res/layout/activity_main.xml加入代码,需要在xml布局文件中声明WebView组件 <WebView android:id"i…

vue借助axios实现网络通信

vue的好处之一&#xff0c;只关注视图层。对于通信&#xff0c;可以在vue实例对象创建前通过mounted钩子函数发送ajax请求&#xff0c;来拿到json数据。 发送请求通过axios&#xff0c;或者jQuery发送。 请求的数据在response对象里面。并绑定到vue对象data方法里。 1. 要访问…

vue自定义组件,插槽,自定义事件

vue组件套娃1. vue自定义组件2. 组件和插槽套娃3. vue组件通过自定义事件更改vue实例中的数据1. vue自定义组件 语法 Vue.component(自定义组件名, {props: [var1, var2, var3], //每个属性可以和页面绑定值template: <p>{{ var1 }}</p> // 自定义模板 里面套htm…

【编程题目】给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数...

第 6 题&#xff08;数组&#xff09;腾讯面试题&#xff1a; 给你 10 分钟时间&#xff0c;根据上排给出十个数&#xff0c;在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下&#xff1a; 【0&#xff0c;1&#xff0c;2&…