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 相关文章推荐
新老版本juqery获取radio对象的方法
Mar 01 Javascript
Javascript 中的 && 和 || 使用小结
Apr 25 Javascript
JavaScript 选中文字并响应获取的实现代码
Aug 28 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
Oct 26 Javascript
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
jQuery使用之处理页面元素用法实例
Jan 19 Javascript
Bootstarp 基础教程之表单部分实例代码
Feb 03 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
React Hook用法示例详解(6个常见hook)
Apr 28 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
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
python去除所有html标签的方法
2015/05/05 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python super的使用方法及实例详解
2019/09/25 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
应届生求职信范文
2014/05/26 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
幼师求职自荐信
2015/03/26 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
Nginx反向代理学习实例教程
2021/10/24 Servers