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 相关文章推荐
JS event使用方法详解
Apr 28 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
Angular2 环境配置详细介绍
Sep 21 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
Koa从零搭建到Api实现项目的搭建方法
Jul 30 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 Javascript
javascript实现留言板功能
Feb 08 Javascript
京东优选小程序的实现代码示例
Feb 25 Javascript
JavaScript 绘制饼图的示例
Feb 19 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中变量及部分适用方法
2008/03/27 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
python中enumerate的用法实例解析
2014/08/18 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python中按值来获取指定的键
2019/03/04 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
个人教师自我评价范文
2013/12/02 职场文书
质检员岗位职责
2013/12/17 职场文书
主管竞聘书范文
2014/03/31 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
读书笔记格式
2015/07/02 职场文书
2019个人半年工作总结
2019/06/21 职场文书
python某漫画app逆向
2021/03/31 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
浅谈JS的原型和原型链
2021/06/04 Javascript