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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
加载jQuery后$冲突的解决办法
Jul 09 Javascript
浅谈javascript中的作用域
Apr 07 Javascript
javascript实现切换td中的值
Dec 05 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
js制作可以延时消失的菜单
Jan 13 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
探索webpack模块及webpack3新特性
Sep 18 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 Javascript
在Vue 中使用Typescript的示例代码
Sep 10 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
HTML+JavaScript实现扫雷小游戏
Sep 30 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
PHP学习 运算符与运算符优先级
2008/06/15 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
vue实例的选项总结
2020/06/09 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python遍历pandas数据方法总结
2018/02/09 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
Django REST framwork的权限验证实例
2020/04/02 Python
django使用graphql的实例
2020/09/02 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
策划创业计划书
2014/02/06 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
幼教求职信
2014/03/12 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
绿色环保标语
2014/06/12 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书