就如其他的编程语言一样,JavaScript也具有许多技巧来完成简单和困难的任务。 一些技巧已广为人知,而有一些技巧也会让你耳目一新。 让我们来看看今天可以开始使用的七个JavaScript技巧吧!

数组去重

使用ES6全新的数据结构即可简单实现。

var j = [...new Set([1, 2, 3, 3])]
输出: [1, 2, 3]

Set的详细用法可以查看ES6入门

数组和布尔值

当数组需要快速过滤掉一些为false的值(0,undefined,false等)使,一般是这样写:

myArray
.map(item => {
// ...
})
// Get rid of bad values
.filter(item => item);

可以使用Boolean更简洁地实现

myArray
.map(item => {
// ...
})
// Get rid of bad values
.filter(Boolean);

例如:

console.log([1,0,null].filter(Boolean));
//输出:[1]

创建纯空对象

你一般会使用{}来创建一个空对象,但是这个对象其实还是会有__proto__特性和hasOwnProperty方法以及其他方法的。

var o = {}

例如有一些对象方法:

但是创建一个纯“字典”对象,可以这样实现:

let dict = Object.create(null);

// dict.__proto__ === "undefined"
// 对象没有任何的属性及方法

合并对象

合并多个对象这个使用展开运算符(...)即可简单实现:

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",
}
*/

函数参数必传校验

函数设置默认参数是JS一个很好的补充,但是下面这个技巧是要求传入参数值需要通过校验。

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

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

// 没有传值,抛出异常
hello(); // 抛出异常
hello(undefined); // 校验通过
hello(null);
hello('David');

函数默认参数允许在没有值或undefined被传入时使用默认形参。如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。

解构别名

const obj = { x: 1 };

// 通过{ x }获取 obj.x 值
const { x } = obj; // 设置 obj.x 别名为 { otherName }
const { x: otherName } = obj;

获取查询字符串参数

使用URLSearchParamsAPI可以轻松获取查询字符串各项的值:

// 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"

(完)

参考

原文链接

默认参数

7个有用的JS技巧的更多相关文章

  1. 12个非常有用的JavaScript技巧

    在这篇文章中,我将分享12个非常有用的JavaScript技巧.这些技巧可以帮助你减少并优化代码. 1) 使用!!将变量转换成布尔类型 有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将 ...

  2. 你应该了解的25个JS技巧

    目录 1. 类型检查小工具 2. 检查是否为空 3. 获取列表最后一项 4. 带有范围的随机数生成器 5. 随机 ID 生成器 6. 创建一个范围内的数字 7. 格式化 JSON 字符串,string ...

  3. JS技巧

    2016-08-09 200多个js技巧代码(Down) word下载 200多个js技巧代码 目录 1.文本框焦点问题... 6 2.网页按钮的特殊颜色... 6 3.鼠标移入移出时颜色变化... ...

  4. 应该知道的25个非常有用的CSS技巧

    在我们的前端CSS编码当中,经常要设置特殊的字体效果,边框圆角等等,还要考虑兼 容性的问题, CSS网页布局,说难,其实很简单.说它容易,往往有很多问题困扰着新 手,在中介绍了非常多的技巧,这些小技巧 ...

  5. 大部分教程不会告诉你的 12 个 JS 技巧

    from:https://www.infoq.cn/article/eSYzcMZK4PkOzZC_68fv 在这篇文章中,作者将分享 12 个非常有用的 JavaScript 技巧,可以帮助你写出简 ...

  6. 提升开发幸福感的10条JS技巧

    鱼头总结一些能够提高开发效率的JS技巧,这些技巧很实用,觉得挺好,想推荐给大家,所以有了这篇文章. 生成随机UID const genUid = () => {  var length = 20 ...

  7. 你应该知道的25个非常有用的CSS技巧

    在我们的前端CSS编码当中,经常要设置特殊的字体效果,边框圆角等等,还要考虑兼容性的问题, CSS网页布局,说难,其实很简单. 说它容易,往往有很多问题困扰着新手,在中介绍了非常多的技巧,这些小技巧与 ...

  8. 冷门JS技巧

    前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

  9. 转载:冷门js技巧

    前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

随机推荐

  1. Please verify that your device’s clock is properly set, and that your signing certificate is not expired.

    解决方法: 1.关闭项目,找到项目文件XXXX.xcodeproj,在文件上点击右键,选择“显示包内容”(Show Package Contents).会新打开一个Finder. 2.在新打开的Fin ...

  2. flask模板 flask-bootstrap

    1.模板 a.block块中继承前面block块的内容,需要添加{{super()}} b.macro 宏:   作用:在模板中定义函数(定义函数->注意添加()->可以使用from 模板 ...

  3. [题解][Codeforces]Good Bye 2019 简要题解

    构造题好评,虽然这把崩了 原题解 A 题意 二人游戏,一个人有 \(k_1\) 张牌,另一个人 \(k_2\) 张,满足 \(2\le k_1+k_2=n\le 100\),每张牌上有一个数,保证所有 ...

  4. [bzoj1875] [洛谷P2151] [SDOI2009] HH去散步

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

  5. 利用SuperMap iObjects.NET控件模拟小球平抛运动

    1.部署SuperMap iObjects.NET控件     相关控件部署参考博客:SuperMap开发入门2--环境部署--我也是个傻瓜 2.Github项目地址     小球平抛运动项目源码 3 ...

  6. [总结]ACM模拟总结

    1.心态一定要稳,千万不要慌. 2.内部交流要多点,说不定就讨论出有用的性质了. 3.题目细节一定要想清楚. 4.一道题绝对不能让多个人来写. 5.英语要好好学.

  7. 解决apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题

    在用apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题,解决方法如下:   cd /var/lib/d ...

  8. Python PE8编程规范

    参考博客:https://blog.csdn.net/weixin_39723544/article/details/82144280 1.使用四个空格而不是tab进行缩进 2.默认使用utf-8编码 ...

  9. 使用typescript改造koa开发框架

    强类型的 TypeScript 开发体验和维护项目上相比 JavaScript 有着明显的优势,那么对常用的脚手架进行改造也就势在必行了. 接下来开始对基于 koa 框架的 node 后端脚手架进行改 ...

  10. X-CTF(REVERSE高级) Reversing-x64Elf-100

    逻辑很简单,如果sub_4006FD函数返回假则返回Nice! 图1 进入sub_4006FD函数,加密过程也很简单,这里值得注意的有两点 一.8*(i%3)是二维数组的第一个参数,这里是取v3的地址 ...