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 相关文章推荐
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
一个简单的JavaScript 日期计算算法
Sep 11 Javascript
浅谈javascript 面向对象编程
Oct 28 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
Jul 12 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
vue2和vue3的v-if与v-for优先级对比学习
Oct 10 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
php常见的魔术方法详解
2014/12/25 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
python自动化测试实例解析
2014/09/28 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python getopt详解及简单实例
2016/12/30 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
大学生入党思想汇报
2014/01/01 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技