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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
我的Node.js学习之路(一)
Jul 06 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
详解离线安装npm包的几种方法
Nov 25 Javascript
js实现九宫格布局效果
May 28 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP小教程之实现链表
2014/06/09 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
python实现simhash算法实例
2014/04/25 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
python如何对链表操作
2020/10/10 Python
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
会计师事务所实习证明
2014/11/16 职场文书
小石潭记导游词
2015/02/03 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python