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 相关文章推荐
Prototype Number对象 学习
Jul 19 Javascript
基于jquery封装的一个js分页
Nov 15 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
详解如何优雅地在React项目中使用Redux
Dec 28 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
vue中轮训器的使用
Jan 27 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
PHP自动重命名文件实现方法
2014/11/04 PHP
curl和libcurl的区别简介
2015/07/01 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
JS判定是否原生方法
2013/07/22 Javascript
jQuery基础知识小结
2014/12/22 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Python 如何批量更新已安装的库
2020/05/26 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
公益活动邀请函
2014/02/05 职场文书
小学老师寄语大全
2014/04/04 职场文书
我爱我校演讲稿
2014/05/21 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
导游词之桂林
2019/08/20 职场文书