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(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
JS继承用法实例分析
Feb 05 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
javascript发送短信验证码实现代码
Nov 12 Javascript
node.js文件上传处理示例
Oct 27 Javascript
JS前端加密算法示例
Dec 22 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
使用vue如何构建一个自动建站项目
Feb 05 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
Mar 27 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
php网页病毒清除类
2014/12/08 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python读取properties配置文件操作示例
2018/03/29 Python
django的csrf实现过程详解
2019/07/26 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python求前n个阶乘的和实例
2020/04/02 Python
通过自学python能找到工作吗
2020/06/21 Python
python openpyxl模块的使用详解
2021/02/25 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
linux下进程间通信的方式
2013/01/23 面试题
社区优秀志愿者材料
2014/02/02 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技