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 相关文章推荐
jQuery中获取Radio元素值的方法
Jul 02 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
angularjs实现多张图片上传并预览功能
Feb 24 Javascript
详解微信小程序 相对定位和绝对定位
May 11 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
Vuex的API文档说明详解
Feb 05 Javascript
Javascript实现打鼓效果
Jan 29 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
详解python中递归函数
2019/04/16 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
如何在django中运行scrapy框架
2020/04/22 Python
python实现猜拳游戏项目
2020/11/30 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
水电工岗位职责
2014/02/12 职场文书
党建示范点实施方案
2014/03/12 职场文书
销售个人求职信范文
2014/04/28 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python