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 相关文章推荐
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
JS中图片缓冲loading技术的实例代码
Aug 29 Javascript
javascript强制点击广告的方法
Feb 06 Javascript
jquery表单验证插件formValidator使用方法
Apr 01 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
vue的mixins属性详解
Mar 14 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
Mar 29 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 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
第八节--访问方式
2006/11/16 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
Python splitlines使用技巧
2008/09/06 Python
Python生成验证码实例
2014/08/21 Python
利用python获取Ping结果示例代码
2017/07/06 Python
python安装Scrapy图文教程
2017/08/14 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python程序运行原理图文解析
2018/02/10 Python
Python unittest单元测试框架总结
2018/09/08 Python
python matplotlib库的基本使用
2020/09/23 Python
python关于倒排列的知识点总结
2020/10/13 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
10个示例带你掌握python中的元组
2020/11/23 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
会计专业推荐信
2013/10/29 职场文书
护理见习报告范文
2014/11/03 职场文书
暑期社会实践证明书
2014/11/17 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫