10个超级实用的JavaScript开发技巧

1、方法参数验证
JavaScript允许你设置参数的默认值。使用此方法,我们可以实施一个巧妙的技巧来验证你的方法参数。

const isRequired = () => { throw new Error('param is required'); };
const print = (num = isRequired()) => { console.log(`printing ${num}`) };
print(2);//printing 2
print()// error
print(null)//printing null

2、格式化JSON代码
现在你已经很熟悉了JSON.stringify。但是您知道可以使用来格式化输出stringify吗?实际上,这更简单。
该stringify方法需要输入value,replacer和space三个参数。后两个是可选参数。这就是为什么我们以前不使用它们。要缩进JSON,必须使用space参数。

console.log(JSON.stringify({name:"John",Age:23},null,'\t'));
>>> 
{
 "name": "John",
 "Age": 23
}

3、从数组中获取唯一值
从数组中获取唯一值,要求我们使用filter方法来过滤出重复值。但是有了新的Set本机对象,事情就变得非常顺利和容易了。

let uniqueArray = [...new Set([1, 2, 3, 3,3,"school","school",'ball',false,false,true,true])];
>>> [1, 2, 3, "school", "ball", false, true]

4、从数组中删除虚假值
在某些情况下,你可能想从数组中删除伪造的值。虚假值是JavaScript中的值为FALSE的值。
JavaScript中只有六个伪造的值,它们是,

  • undefined
  • null
  • NaN
  • 0
  • “” (空字符串)
  • false

滤除这些虚假值的最简单方法是使用以下函数。

myArray
    .filter(Boolean);

如果要对数组进行一些修改,然后过滤新数组,则可以尝试这样的操作。请记住,原件myArray保持不变。

myArray
    .map(item => {
        // Do your changes and return the new item
    })
    .filter(Boolean);

5、合并多个对象
我有几个实例需要合并两个或多个类,这是我的首选方法。

const user = { 
 name: 'John Ludwig', 
 gender: 'Male' 
 };
const college = { 
 primary: 'Mani Primary School', 
 secondary: 'Lass Secondary School' 
 };
const skills = { 
 programming: 'Extreme', 
 swimming: 'Average', 
 sleeping: 'Pro' 
 };
const summary = {...user, ...college, ...skills};

这三个点在JavaScript中也称为散布运算符。
6、排序数字数组
JavaScript数组带有内置的sort方法。默认情况下,此sort方法将数组元素转换为字符串,并对其进行字典排序。在对数字数组进行排序时,这可能会导致问题。因此,这里是解决此问题的简单解决方案。

[0,10,4,9,123,54,1].sort((a,b) => a-b);
>>> [0, 1, 4, 9, 10, 54, 123]

你正在提供一个将number数组中的两个元素与sort方法进行比较的函数。此功能可帮助我们接收正确的输出。
7、禁用右键
你可能曾经想阻止用户在你的网页上单击鼠标右键。尽管这种情况很少见,但是在某些情况下你可能需要此功能。

< body oncontextmenu = “ return false” >
    < div > < / div>
< / body>

这个简单的代码段将为你的用户禁用右键单击。

8、使用别名进行销毁
该解构赋值语法是JavaScript表达式,使得它可以从阵列解压缩的值,或从属性的对象,为不同的变量。可以不使用现有的对象变量,而可以将其重命名为自己的首选项。

const object = {number:10};//抓取数字
const {number} = object;//抓取数字并将其重命名为otherNumber
const {number:otherNumber} = object;console.log(otherNumber); // 10

9、获取数组中的最后一项
如果要从数组的末尾获取元素,则可以将splice方法与负整数一起使用。

let array = [01234567]
console.log(array.slice(-1));
>>> [7]
console.log(array.slice(-2));
>>> [67]
console.log(array.slice(-3));
>>> [567]

10、等到进程完成
在某些情况下,你将需要等待多个进程结束。我们可以用来Promise.all并行履行进程。
注意:进程将在单核CPU中同时运行,并在多核CPU中并行运行。它的主要任务是等待传递给它的所有进程都得到解决。

const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve("Data release"),
    Promise.reject(new Error('Something went wrong'))];
Promise.all(PromiseArray)
  .then(data => console.log('all resolved! here are the resolve values:', data))
  .catch(err => console.log('got rejected! reason:', err))

要注意的是,主要事件Promise.all,当一个进程拒绝时,该方法将引发错误。这意味着你的代码将不会等到你所有的进程都完成。
如果你要等到所有进程都完成后,无论它们被拒绝还是被解决,都可以使用Promise.allSettled。此方法在ES2020的最终版本中。

const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve(“数据发布”),
    Promise.reject(新的错误('出问题了')))];Promise.allSettled(PromiseArray).then(res => {
console.log(res);
})。catch(err => console.log(err));// [
// {状态:“已完成”,值:100},
// {状态:“已拒绝”,原因:空},
// {状态:“已完成”,值:“数据发布”}},
// {状态:“已拒绝”,原因:错误:出了点问题……}
//]

即使某些进程被拒绝,Promise.allSettled也会从你所有的承诺中返回结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值