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 操作DOM的基本用法分享
Apr 05 Javascript
JS定时器实例
Apr 17 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
JS倒计时实例_天时分秒
Aug 22 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
微信小程序实现获取用户信息并存入数据库操作示例
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+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
解决laravel 表单提交-POST 异常的问题
2019/10/15 PHP
编写Js代码要注意的几条规则
2010/09/10 Javascript
Script的加载方法小结
2011/01/12 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
JS重要知识点小结
2011/11/06 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
介绍Python中的__future__模块
2015/04/27 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
值得收藏的10道python 面试题
2019/04/15 Python
python pygame实现球球大作战
2019/11/25 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
Python类成员继承重写的实现
2020/09/16 Python
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
运动会入场词50字
2014/02/20 职场文书
关爱老人标语
2014/06/21 职场文书
爱护公共设施的标语
2014/06/24 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python