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 相关文章推荐
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
JQuery球队选择实例
May 18 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
Jul 06 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
Dec 19 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
layer弹出层扩展主题的方法
Sep 11 Javascript
javascript 函数的暂停和恢复实例详解
Apr 25 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
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
DOM相关内容速查手册
2007/02/07 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python对切片命名的实现方法
2018/10/16 Python
python进阶之自定义可迭代的类
2019/08/20 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
创业计划书中包含的9个方面
2013/12/26 职场文书
接待员岗位责任制
2014/02/10 职场文书
毕业设计致谢词
2015/05/14 职场文书
看上去很美观后感
2015/06/10 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记