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动态添加删除table行的示例代码
Dec 16 Javascript
js统计页面的来访次数实现代码
May 09 Javascript
JavaScript原生对象之Date对象的属性和方法详解
Mar 13 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 Javascript
javascript实现添加附件功能的方法
Nov 18 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
Bootstrap栅格系统的使用详解
Oct 30 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
微信小程序云开发实现数据添加、查询和分页
May 17 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 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 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue中的适配px2rem示例代码
2018/11/19 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
python处理csv数据的方法
2015/03/11 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Python端口扫描简单程序
2016/11/10 Python
Python格式化日期时间操作示例
2018/06/28 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
打架检讨书800字
2014/01/10 职场文书
农民工创业典型事迹
2014/01/25 职场文书
推普周活动总结
2014/08/28 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2015年招生工作总结
2015/05/04 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
CentOS MySql8 远程连接实战
2022/04/19 MySQL