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 面向对象编程基础 多态
Aug 21 Javascript
Egret引擎开发指南之编译项目
Sep 03 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
May 12 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
jquery中live()方法和bind()方法区别分析
Jun 23 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
Aug 31 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
Dec 19 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
微信小程序上传图片到php服务器的方法
May 23 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
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
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php绘制圆形的方法
2015/01/24 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
javascript 数组的方法集合
2008/06/05 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
Python中join和split用法实例
2015/04/14 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
打架检讨书50字
2014/01/11 职场文书
上课睡觉检讨书
2014/01/28 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
双方协议书
2014/04/22 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript