js优化技巧

昨天在前端开发博客的公众号上面看见了2021年前端开发者需要知道的34中js优化技巧这篇文章,里面有些方法之前没有怎么用,觉得很实用,特记录下来

1、带有多个条件的if语句

a、可以把多个放在一个数组里面,然后调用数组的includes方法
b、多个条件的话还可以用switch

if(['abc','xyj','def'].includes(x)){}

switch(x){}
2、简化if true…else

对于只带有简单的逻辑的if else条件,可以实用三元运算符

const x = 8
let test = x > 10 ? true : false

如有嵌套条件

const x= 300
let test = (x > 100) ? 'more 100' : (x < 50) ? 'less 50' : 'between 50 and 100'
3、声明变量

同时声明多个变量的简写

let [test1,test2] = [1,1];
console.log(test1,test2) // 1, 1
4、null、undefined和空值检查
let a = null
// 判断是否为null,空字符串、零
if(!a){}
// 判断是否为undefined
if(typeof(a) === 'undefined'){}
// 判断是否为null,undefined,零
if(!a && typeof(a) !== 'undefined' && a!= 0 ){}

5、null、undefined检查,默认赋值
// 一般检查
let test = null
let test2 = test || ''
console.log(test2) // ''
// 或者使用??操作符
let test3 = test ?? ''
console.log(test3) // ''
6、用于多个条件判断的&&操作符

只有变量为true时才调用函数,可以使用&&操作符

const test = true
test && getList()
7、简短的函数调用

可以使用三元操作符来实现多个函数调用

(test3 === 1 ? test1 : test2)()
8、switch简化

我们可以将条件保存在键值对象中,并根据条件来调用它们

let something = 1
let data = {
	1:test1,
	2:test2,
	3:test
}
data[something] && data[something]();
9、隐式返回

通过使用箭头函数,我们可以直接放置,不需要return语句

let data = value => (Math.PI * value)
10、延展操作符
// 数据构造
const data = [1, 2,3]
const test = [4,5,...this.data]
console.log(test) // 1,2,3,4,5
// 进行浅数据克隆
const test2 = [...this.data]
11、解构赋值
const data = {
	test1,
	test, 
	test3
}
const {test, test3} = this.data
12、find、filter、findIndex
const data = [
	{
		type: 'test1',
		name: 'abc'
	},
	{
		type: 'test2',
		name: 'abc1'
	},
	{
		type: 'test3',
		name: 'abc3'
	},
]
// find,寻找到符合条件的值,并把它返回
const dataFind = data.find(value => data.type === 'test1')
// {type: 'test1',name: 'abc'}

// filter,返回符合条件的数据,返回新数据,他不好对原数组进行操作
const dataList = data.filter(value => value.name === 'abc')
// {type: 'test1',name: 'abc'}

//findIndex,查找符号条件的数据,并返回第一个符号条件的元素的下标;没有找到就返回-1
const index = data.findIndex(value => value.name === 'abc1')
// 1
13、indexOf的按位操作简化

查找第一层数组是否含有某个值
字符串和数组都可以用indexOf查找指定字符

if(~arr.indexOf(item)){} // item found
if(!~arr.indexOf(item)){} // item not found
//includes()函数,查看数组里面是否含有指定的值,返回布尔类型
if(arr.includes(item)){}
14、object.entries(),object.values(),object.keys()
// object.enteries(),获取对象的键值对
const data = {test: 'abc', test1: 'bfe', test2: 'uiy',test3: 'iou'}
const arr = Object.entries(data)
console.log(arr)
//
[['test','abc'],['test1','bfe'],['test2','uiy'],['test3','iou']]

//object.values,获取对象属性的值
const arr1 = Object.value(data)
console.log(arr1)
// ['abc','bfe','uiy','iou']

//object.keys,获取对象的键
const arr1 = Object.keys(data)
console.log(arr1)
// ['test','test1','test2','test3']
15、双重按位操作
// 数值向下取值
Math.floor(1.9) === 1 // true
~~1.9 === 1 // true
16、重复字符串多次

赋多次重复字符

'test '.repeat(5)
// test test test test
17、查找数组最大值、最小值
const arr = [1, 2, 3]
Math.max(...arr) // 3
Math.min(...arr) // 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值