面试神器之数组去重

const a = [...new Set([1, 2, 3, 3])]
>> [1, 2, 3]

操作数组担心 falsy 值?

const res = myArray.filter(Boolean).map( // todo )

生成一个真正的空对象

const o = Object.create(null)
// o.__proto__ === "undefined"
// 对象 o 不再含有任何属性

合并对象

const a = {m: 1, n: 2}
const b = {n: 3, x: 5} cons res = {
...a,
...b
} /*
res = {
m: 1,
n: 3,
x: 5
}
*/

要求函数参数必传

const isRequired = () => { throw new Error('param is required'); };

const hello = (name = isRequired()) => { console.log(`hello ${name}`) };

// 这会抛出错误
hello();
hello(undefined); // 正确姿势
hello(null);
hello('David');

解构后使用别名

const obj = { x: 1 };

// otherName 的值就是 obj.x
const { x: otherName } = obj;

快速获取 URL 参数

const urlParams = new URLSearchParams(window.location.search);

// 假设 "?post=1234&action=edit"

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"

URLSearchParams 帮助我们快速有效的解析参数,如果它依然存在浏览器兼容性的问题,这里有一个 polyfill:

function getUrlParameter(name) {
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
const regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
const results = regex.exec(location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};

...

对了,你可能发现所有栗子我都使用 const 来声明变量,如果你感觉疑惑,可以看看这篇文章:【JavaScript 的内存模型】

引用

7 Useful JavaScript Tricks

Get Query String Parameters with JavaScript

90% 前端开发者都不知道的 JavaScript 实用小技巧的更多相关文章

  1. 90%的开发者都不知道的UI本质原理和优化方式

    前言 很多开发者在工作中一直和UI打交道,所以认为UI非常的简单! 事实上对于90%的开发者来说,不知道UI的本质原理. 虽然在开发中,我们在接到产品的UI需求之后,可以走捷径照抄大型APP代码,但是 ...

  2. 90%的人都不知道的Node.js 依赖关系管理(上)

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://dzone.com/articles/nodejs-dependency-mana ...

  3. 90%的人都不知道的Node.js 依赖关系管理(下)

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://dzone.com/articles/node-dependency-manage ...

  4. 关于 junit4 90% 的人都不知道的特性,详解 junitperf 的实现原理

    前言 上一节介绍了 https://github.com/houbb/junitperf 的入门使用. 这一节我们从源码的角度,剖析一下其实现方式. 性能测试该怎么做? Junit Rules jun ...

  5. 41个Web开发者JavaScript实用小技巧

    1. 将彻底屏蔽鼠标右键 oncontextmenu="window.event.returnValue=false" < table border oncontextmen ...

  6. redis-cli中那些或许我们还不知道的一些实用小功能

    玩过redis的朋友都知道,redis中有一个叫做redis-cli的小工具,我们可以利用它在test和develop环境下进行高效的模拟测试,然而在现实环境中, 我们只知道直接键入redis-cli ...

  7. 您可能不知道的ASP.Net小技巧

    <!-- 页码和简介 --> 1.  在提交页面之后,保持滚动条的位置 可以在page指令上加上MaintainScrollPositionOnPostback指令 <%@ Page ...

  8. 前端开发者不得不知的ES6十大特性

    前端开发者不得不知的ES6十大特性 转载 作者:AlloyTeam 链接:http://www.alloyteam.com/2016/03/es6-front-end-developers-will- ...

  9. Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识

    摘要: 详解原型污染. 原文:Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识 作者:Lucas HC Fundebug经授权转载,版权归原作者所有. 可能有信息敏感的同学已 ...

随机推荐

  1. Oracle 实现自增主键

    废话不多讲,直接上代码 //1.创建表 Create Table testZcm(       Id Number(2) Not Null Primary Key,       postCode Nu ...

  2. @EnableFeignClients 客户端详细

    在Spring cloud应用中,当我们要使用feign客户端时,一般要做以下三件事情 : 1.使用注解@EnableFeignClients启用feign客户端: 示例 : @SpringBootA ...

  3. Python爬虫 | xpath的安装

    错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...

  4. 关于读取Com口数据时,Com口的名字的两种读法。

    1,直接调用SerialPort类中的GetPortNames()方法. string[] portList = System.IO.Ports.SerialPort.GetPortNames(); ...

  5. RFM模型的变形LRFMC模型与K-means算法的有机结合

    应用场景: 可以应用在不同行业的客户分类管理上,比如航空公司,传统的RFM模型不再适用,通过RFM模型的变形LRFMC模型实现客户价值分析:基于消费者数据的精细化营销 应用价值: LRFMC模型构建之 ...

  6. shell习题训练

    shell习题训练 求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2 ...

  7. 洛谷 P1789 【Mc生存】插火把 题解

    P1789 [Mc生存]插火把 题目背景 初一党应该都知道...... 题目描述 话说有一天 linyorson 在"我的世界"开了一个 \(n\times n(n\le 100) ...

  8. 【LG3582】[POI2015]KIN

    [LG3582][POI2015]KIN 题面 洛谷 题解 这题维护区间的信息有点像最大子段和,我们往最大子段和上面靠. 对于一个颜色,我们有一个直观的想法就是将它一次出现的权值设为正,二次出现就设为 ...

  9. javaScript 判断为false

    JavaScript把null.undefined.0.NaN和空字符串''视为false,其他值一概视为true

  10. ES6 - 开篇

    一些关于es6简单的介绍与了解.初始认知有限,循序完善. ES6: 又叫ES2015,是2015年推出的JavaScript新版本. 相应的,后边推出的ES7.8.9.10等都依次是上一版本发出后一年 ...