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 相关文章推荐
JScript的条件编译
May 29 Javascript
基于jquery的表格排序
Sep 11 Javascript
jquery中实现标签切换效果的代码
Mar 01 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
Vue+webpack项目基础配置教程
Feb 12 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
js实现计时器秒表功能
Dec 16 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实现时间轴函数代码
2011/10/08 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php自定义分页类完整实例
2015/12/25 PHP
JavaScript 特殊字符
2007/04/05 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
python生成IP段的方法
2015/07/07 Python
简单解析Django框架中的表单验证
2015/07/17 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
求职简历的自我评价
2014/01/31 职场文书
安全生产先进个人材料
2014/02/06 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang