总有一些东西可以让我们去挖掘和探索,而ES2020的新版本有很多特别强大的特性让人迫不及待想要尝试。代码的写法有很多种,总有一些方法可以写出更简洁明了的代码,这就需要一些小技巧了。本文列出了一些对JavaScript开发人员有用的技巧,希望对您有所帮助。方法参数校验JavaScript可以设置参数的默认值,它提供了一个技巧来校验方法参数:constisRequired=()=>{thrownewError('paramisrequired');};constprint=(num=isRequired())=>{console.log(`printing${num}`)};print(2);//printing2print()//errorprint(null)//printingnull格式JSON编码你一定熟悉JSON.stringify,但是你用过吗stringify格式化输出?这个操作其实很简单。stringify需要三个参数,value,replacer和space。后两个是可选参数,所以之前没有用过。如果要缩进JSON,则必须设置space参数。console.log(JSON.stringify({name:"John",Age:23},null,'\t'));>>>{"name":"John","Age":23}从数组中获取唯一值要从数组中获取唯一值,需要使用filter过滤掉重复值,但是有了新的setnativeobject,就变得容易多了。letuniqueArray=[...newSet([1,2,3,3,3,"school","school",'ball',false,false,true,true])];>>>[1,2,3,"school","ball",false,true]过滤数字数组JavaScript数组内置过滤方法。默认情况下,此方法将数组元素转换为字符串并按字典顺序对它们进行排序。对数字数组进行排序时可能会出现问题,这里有一个简单的解决方案:[0,10,4,9,123,54,1].sort((a,b)=>a-b);>>>[0,1,4,9,10,54,123]该函数通过比较number数组中的两个元素进行过滤,可以得到正确的输出。去除数组中的假值有时候我们可能需要去除数组中的假值,也就是那些在JavaScript中相当于FALSE的值。JavaScript有六个假值,包括:undefinednullNaN0""(emptystring)false一个更简单的过滤掉假值的方法是使用下面的函数:myArray.filter(Boolean);如果你想对数组做一些修改,然后过滤新的数组,你可以试试下面的方法。请记住,原始的myArray保持不变。myArray.map(item=>{//Doyourchangesandreturnthenewitem}).filter(Boolean);合并多个对象时,遇到合并两个或多个类别的情况时,下面的方法非常有用:constuser={name:'JohnLudwig',gender:'Male'};constcollege={primary:'ManiPrimarySchool',secondary:'LassSecondarySchool'};constskills={programming:'Extreme',swimming:'Average',sleeping:'Pro'};constummary={...user,...college,...skills};等到所有的承诺都兑现了再行动。有时您需要等待一些promise对象完成才能进行下一步。我们可以使用Promise.all来同步完成。请注意,所有Promises可以在单核CPU上并发运行,也可以在多核CPU上并行运行。它的主要工作是等待传递给它的所有承诺得到解决。constPromiseArray=[Promise.resolve(100),Promise.reject(null),Promise.resolve("Datarelease"),Promise.reject(newError('Somethingwentwrong'))];Promise.all(PromiseArray).then(数据=>console.log('allresolved!hereareatheresolvevalues:',data)).catch(err=>console.log('gotrejected!reason:',err))Promise.all需要注意的重要一点是,如果其中一个承诺被拒绝,将发出错误警告。这意味着您的代码不必等待所有承诺都得到解决。如果你想运行所有的promise,不管它们是否被拒绝,你可以使用Promise.allSettled,在ES2020的最终版本中使用这个方法:constPromiseArray=[Promise.resolve(100),Promise.reject(null),Promise.resolve("Datarelease"),Promise.reject(newError('Somethingwentwrong'))];Promise.allSettled(PromiseArray).then(res=>{console.log(res);}).catch(err=>console.log(err));//[//{status:"fulfilled",value:100},//{status:"rejected",reason:null},//{status:"fulfilled",value:"Datarelease"},//{status:"rejected",reason:Error:Somethingwentwrong...}//]Promise.allSettled将返回所有承诺的结果,即使某些承诺被拒绝。虽然禁用右键的情况很少见,但有时您可能需要阻止用户在网页上使用鼠标右键。这段简单的代码就可以做到:
