es6中比较有用的7个技巧小结


Posted in Javascript onJuly 12, 2019

前言

ES6出来已经有好几年了,同时很多新特性可以被巧妙地运用在项目中。我想要列下其中一些,希望它们对你有用。

如果你还知道其他一些小技巧,欢迎留言~ 很高兴把它们补充进来。

es6有用的7个技巧

数组去重

var arr = [1, 2, 3, 3, 4];
console.log(...new Set(arr))
>> [1, 2, 3, 4]

数组和布尔

有时我们需要过滤数组中值为 false 的值. 例如(0, undefined, null, false), 你可能不知道这样的技巧

var myArray = [1, 0 , undefined, null, false];
myArray.filter(Boolean);
> > [1]
//是不是很简单, 只需要传入一个 Boolean 函数即可.

创建一个空对象

有时我们需要创建一个纯净的对象, 不包含什么原型链等等. 一般创建空对象最直接方式通过字面量 {}, 但这个对象中依然存在 proto 属性来指向 Object.prototype 等等.

let dict = Object.create(null);
 
dict.__proto__ === "undefined"

合并对象

在JavaScript中合并多个对象的需求一直存在, 比如在传参时需要把表单参数和分页参数进行合并后在传递给后端

const page = {
 current: 1,
 pageSize: 10
}
 
const form = {
 name: "",
 sex: ""
}
 
const params = {...form, ...page};
 
/*
 {
  name: "",
  sex: "",
  current: 1,
  pageSize: 10
 }
*

利用ES6提供的扩展运算符让对象合并变得很简单.

函数参数必须

ES6中可以给参数指定默认值,确实带来很多便利. 如果需要检测某些参数是必传时,可以这么做

const isRequired = () => { throw new Error('param is required'); };
 
const hello = (name = isRequired()) => { console.log(`hello ${name}`) };
 
// 这里将抛出一个错误,因为名字时必须
hello();
// 这也将抛出一个错误
hello(undefined);
 
// 正常
hello(null);
hello('David');

解构赋值时使用别名

解构赋值是一个非常受欢迎的JavaScript功能,但有时我们更喜欢用其他名称引用这些属性,所以我们可以利用别名来完成:

const obj = { x: 1 };
 
// Grabs obj.x as { x }
const { x } = obj;
 
// Grabs obj.x as { otherName }
const { x: otherName } = obj;

获取查询参数

多年来,我们编写粗糙的正则表达式来获取查询字符串值,但那些日子已经一去不复返了; 现在我们可以通过 URLSearchParams API 来获取查询参数

在不使用 URLSearchParams 我们通过正则的方式来完成获取查询参数的, 如下:

function getQueryString(name) {
 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
 var r = window.location.search.substr(1).match(reg);
 return r ? r[2] : null;
 }

使用 URLSearchParams 之后:

// 假设地址栏中查询参数是这样 "?post=1234&action=edit"
 
var urlParams = new URLSearchParams(window.location.search);
 
console.log(urlParams.has('post')); // true
console.log(urlParams.get('action')); // "edit"
console.log(urlParams.getAll('action')); // ["edit"]
console.log(urlParams.toString()); // "?post=1234&action=edit"
console.log(urlParams.append('active', '1')); // "?post=1234&action=edit&active=1"

相比之前使用起来更加容易了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript中的History历史对象
Jan 16 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
Aug 06 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
js 获取扫码枪输入数据的方法
Jun 10 Javascript
JavaScript canvas实现文字时钟
Jan 10 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 #Javascript
javascript实现简易聊天室
Jul 12 #Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 #Javascript
小程序实现短信登录倒计时
Jul 12 #Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 #Javascript
小程序实现分类页
Jul 12 #Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 #jQuery
You might like
Thinkphp开发--集成极光推送
2017/09/15 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
node中koa中间件机制详解
2017/08/22 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
python openpyxl使用方法详解
2019/07/18 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
运动会演讲稿50字
2014/08/25 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
父亲节感言
2015/08/03 职场文书