9个JavaScript日常开发小技巧


Posted in Javascript onOctober 06, 2020

1.生成指定范围的数字

在某些情况下,我们会创建一个处在两个数之间的数组。假设我们要判断某人的生日是否在某个范围的年份内,那么下面是实现它的一个很简单的方法

let start = 1900, end = 2000;
[...new Array(end + 1).keys()].slice(start);
// [ 1900, 1901, ..., 2000]
// 还有这种方式,但对于很的范围就不太稳定

Array.from({ length: end - start + 1 }, (_, i) => start + i);

2.使用值数组作为函数的参数

在某些情况下,我们需要将值收集到数组中,然后将其作为函数的参数传递。 使用 ES6,可以使用扩展运算符(...)并从[arg1, arg2] > (arg1, arg2)中提取数组:

const parts = {
 first: [0, 2],
 second: [1, 3],
}

["Hello", "World", "JS", "Tricks"].slice(...parts.second)
// ["World", "JS"]

3.将值用作 Math 方法的参数

当我们需要在数组中使用Math.max或Math.min来找到最大或者最小值时,我们可以像下面这样进行操作:

const elementsHeight = [...document.body.children].map(
 el => el.getBoundingClientRect().y
);
Math.max(...elementsHeight);
// 474

const numbers = [100, 100, -1000, 2000, -3000, 40000];
Math.min(...numbers);
// -3000

4.合并/展平数组中的数组

Array 有一个很好的方法,称为Array.flat,它是需要一个depth参数,表示数组嵌套的深度,默认值为1。 但是,如果我们不知道深度怎么办,则需要将其全部展平,只需将Infinity作为参数即可 ?

const arrays = [[10], 50, [100, [2000, 3000, [40000]]]]

arrays.flat(Infinity)
// [ 10, 50, 100, 2000, 3000, 40000 ]

5. 防止代码崩溃

在代码中出现不可预测的行为是不好的,但是如果你有这种行为,你需要处理它。

例如,常见错误TypeError,试获取undefined/null等属性,就会报这个错误。

const found = [{ name: "Alex" }].find(i => i.name === 'Jim')

console.log(found.name)
// TypeError: Cannot read property 'name' of undefined

我们可以这样避免它:

const found = [{ name: "Alex" }].find(i => i.name === 'Jim') || {}

console.log(found.name)
// undefined

6. 传递参数的好方法

对于这个方法,一个很好的用例就是styled-components,在ES6中,我们可以将模板字符中作为函数的参数传递而无需使用方括号。 如果要实现格式化/转换文本的功能,这是一个很好的技巧:

const makeList = (raw) =>
 raw
  .join()
  .trim()
  .split("\n")
  .map((s, i) => `${i + 1}. ${s}`)
  .join("\n");

makeList`
Hello, World
Hello, World
`;
// 1. Hello,World
// 2. World,World

7.交换变量

使用解构赋值语法,我们可以轻松地交换变量 使用解构赋值语法 ?:

let a = "hello"
let b = "world"

// 错误的方式
a = b
b = a
// { a: 'world', b: 'world' }

// 正确的做法
[a, b] = [b, a]
// { a: 'world', b: 'hello' }

8.按字母顺序排序

需要在跨国际的项目中,对于按字典排序,一些比较特殊的语言可能会出现问题,如下所示 ?

// 错误的做法
["a", "z", "ä"].sort((a, b) => a - b);
// ['a', 'z', 'ä']

// 正确的做法
["a", "z", "ä"].sort((a, b) => a.localeCompare(b));
// [ 'a', 'ä', 'z' ]

 localeCompare() :用本地特定的顺序来比较两个字符串。

9.隐藏隐私

最后一个技巧是屏蔽字符串,当你需要屏蔽任何变量时(不是密码),下面这种做法可以快速帮你做到:

const password = "hackme";
password.substr(-3).padStart(password.length, "*");
// ***kme

掌握这些小技巧,在日常开发过程中可以避免很多不必要的错误,更多关于JavaScript日常开发小技巧请查看下面的相关链接

Javascript 相关文章推荐
使javascript也能包含文件
Oct 26 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
js 实现菜单左右滚动显示示例介绍
Nov 21 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
JavaScript变量基本使用方法实例分析
Nov 15 Javascript
详解ES6中class的实现原理
Oct 03 #Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 #Javascript
vue 虚拟DOM的原理
Oct 03 #Javascript
vue使用video插件vue-video-player的示例
Oct 03 #Javascript
区分vue-router的hash和history模式
Oct 03 #Javascript
Vue双向数据绑定(MVVM)的原理
Oct 03 #Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 #Javascript
You might like
FleaPHP的安全设置方法
2008/09/15 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
JavaScript类的写法
2016/09/17 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
python opencv之SURF算法示例
2018/02/24 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Django框架反向解析操作详解
2019/11/28 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
大学生职业生涯规划书范文
2014/01/14 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python