7个好用的JavaScript技巧分享(译)


Posted in Javascript onMay 07, 2019

前言

就像所有其他编程语言一样,JavaScript也有许多技巧可以完成简单和困难的任务。 一些技巧广为人知,而其他技巧则足以让你大吃一惊。 让我们来看看你今天就可以开始使用的七个JavaScript技巧吧!

原文链接:davidwalsh.name/javascript-…

数组去重

数组去重可能比您想象的更容易:

var j = [...new Set([1, 2, 3, 4, 4])]
>> [1, 2, 3, 4]

很简单有木有!

过滤掉falsy值

是否需要从数组中过滤出falsy值(0,undefined,null,false等)? 你可能不知道还有这个技巧:

let res = [1,2,3,4,0,undefined,null,false,''].filter(Boolean);
>> 1,2,3,4

创建空对象

您可以使用{ }创建一个看似空的对象,但该对象仍然具有__proto__和通常的hasOwnProperty以及其他对象方法。 但是,有一种方法可以创建一个纯粹的“字典”对象:

let dict = Object.create(null);

// dict.__proto__ === "undefined"
// No object properties exist until you add them

这种方式创建的对象就很纯粹,没有任何属性和对象,非常干净。

合并对象

在JavaScript中合并多个对象的需求已经存在,尤其是当我们开始使用选项创建类和小部件时:

const person = { name: 'David Walsh', gender: 'Male' };
const tools = { computer: 'Mac', editor: 'Atom' };
const attributes = { handsomeness: 'Extreme', hair: 'Brown', eyes: 'Blue' };

const summary = {...person, ...tools, ...attributes};
/*
Object {
 "computer": "Mac",
 "editor": "Atom",
 "eyes": "Blue",
 "gender": "Male",
 "hair": "Brown",
 "handsomeness": "Extreme",
 "name": "David Walsh",
}
*/

这三个点(...)使任务变得更加容易!

Require函数参数

能够为函数参数设置默认值是JavaScript的一个很棒的补充,但是请查看这个技巧,要求为给定的参数传递值:

const isRequired = () => { throw new Error('param is required'); };

const hello = (name = isRequired()) => { console.log(`hello ${name}`) };

// This will throw an error because no name is provided
hello();

// This will also throw an error
hello(undefined);

// These are good!
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;

有助于避免与现有变量的命名冲突!

获取查询字符串参数

获取url里面的参数值或者追加查询字符串,在这之前,我们一般通过正则表达式来获取查询字符串值,然而现在有一个新的api,具体详情可以查看这里,可以让我们以很简单的方式去处理url。

比如现在我们有这样一个url,"?post=1234&action=edit",我们可以利用下面的技巧来处理这个url。

// Assuming "?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部分是我们所看到的语言改进的速度。 尽管JavaScript的动态不断变化,我们仍然需要采用一些不错的技巧; 将这些技巧保存在工具箱中,以便在需要时使用!

那你最喜欢的JavaScript技巧是什么?

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JS数学函数Exp使用说明
Aug 09 Javascript
javascript Array.prototype.slice的使用示例
Nov 14 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
微信小程序三级联动地址选择器的实例代码
Jul 12 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
Mar 06 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
js隐式转换的知识实例讲解
Sep 28 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
vue实现折线图 可按时间查询
Aug 21 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
May 07 #Javascript
vue搜索和vue模糊搜索代码实例
May 07 #Javascript
详解Vue demo实现商品列表的展示
May 07 #Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
May 07 #Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 #Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
May 07 #Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 #Javascript
You might like
PHP实现分页的一个示例
2006/10/09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
金属材料工程个人求职的自我评价
2013/12/04 职场文书
农贸市场管理制度
2014/01/31 职场文书
棉花姑娘教学反思
2014/02/15 职场文书
财政专业求职信范文
2014/02/19 职场文书