1.三元运算符当您想编写if...else语句时,请改用三元运算符。constx=20;letanswer;if(x>10){answer='isgreater';}else{answer='islesser';}简写:constanswer=x>10?'isgreater':'islesser';嵌套if语句:constbig=x>10?“大于10”:x2。短路求值简写当给一个变量赋另一个值时,您要确保原始值不为null、undefined或empty。可以编写具有多个条件的if语句。if(variable1!==null||variable1!==undefined||variable1!==''){letvariable2=variable1;}或者你可以使用短路求值法:constvariable2=variable1||'new';3.声明变量速记方法letx;放任自流;让兹=3;速记法:letx,y,z=3;4.if存在条件简写方法if(likeJavaScript===true)简写:if(likeJavaScript)只有当likeJavaScript为真值时,两个判断值不为真时,可以这样:leta;if(a!==true){//dosomething...}简写:leta;if(!a){//dosomething...}5.JavaScript循环简写方法for(leti=0;iconsole.log('Hello',name);setTimeout(()=>console.log('Loaded'),2000);list.forEach(item=>console.日志(项目));10。隐式返回值简写通常使用return语句来返回最终函数,因此,具有单个语句的箭头函数可以隐式返回其值(函数必须省略{}以省略return关键字)。返回多行语句(如对象字面量表达式),需要用()将函数体括起来。functioncalcCircumference(diameter){returnMath.PI*diameter}varfunc=functionfunc(){return{foo:1};};简写:calcCircumference=diameter=>(Math.PI*diameter;)varfunc=()=>({foo:1});11、默认参数值是在函数中给参数传递默认值,一般用if语句写,但是用ES6来定义默认值,会很简洁:functionvolume(l,w,h){if(w===undefined)w=3;if(h===undefined)h=4;returnl*w*h;}简写:volume=(l,w=3,h=4)=>(l*w*h);volume(2)//output:2412.templatestring在传统的JavaScript语言中,输出模板通常是这样写的。constwelcome='Youhaveloggedinas'+first+''+last+'.'constdb='http://'+host+':'+port+'/'+database;ES6可以使用反引号和${}简写:constwelcome=`Youhaveloggedinas${first}${last}`;constdb=`http://${host}:${port}/${database}`;13.解构赋值的简写方法webframeworks中的组件和API经常需要来回传递数组或对象字面量数据,然后需要解构它constobservable=require('mobx/observable');constaction=require('mobx/action');construnInAction=require('mobx/runInAction');conststore=this.props.store;constform=this.props.form;constloading=this.props.loading;consterrors=this.props.errors;constentity=this.props.entity;shorthand:import{observable,action,runInAction}from'mobx';const{store,form,loading,errors,entity}=this.props;也可以赋变量名:const{store,form,loading,errors,entity:contact}=this.props;//***变量名为contact14。多行字符串缩写需要输出多行字符串,需要用+拼接:constlorem='Loremipsumdolorsitamet,consectetur\n\t'+'adipisicingelit,seddoeiu??smodtemporincididunt\n\t'+'utlaboreetdoloremagnaaliqua。Utenimadminim\n\t'+'veniam,quisnostrudexercitationullamcolaboris\n\t'+'nisiutaliquipexeacommodoconsequat.Duisaute\n\t'+'iruredolorinreprehenderitinvoluptatevelitesse.\n\t'使用反引号,则可以达到简写作用:constlorem=`Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiu??smodtemporincididuntutlaboreetdoloremagnaaliqua.Utenimadminimveniam,quisnostrudexercitationullamcolaborisnisiutaliquipexeacommodoconsequat.Duisauteiruredolorinreprehenderitinvoluptatevelitesse.`15.扩展运算符简写扩展运算符有几个用例可以提高JavaScript代码的效率,并且可以用来替换数组函数//joiningarraysconstodd=[1,3,5];constnums=[2,4,6].concat(odd);//cloningarraysconstarr=[1,2,3,4];constarr2=arr.slice()简写://joiningarraysconstodd=[1,3,5];constnums=[2,4,6,...odd];控制台。log(nums);//[2,4,6,1,3,5]//cloningarraysconstarr=[1,2,3,4];constarr2=[...arr];与concat()函数不同,您可以使用扩展运算符将一个数组插入另一个数组中的任意位置。constodd=[1,3,5];constnums=[2,...奇数,4,6];也可以使用展开运算符解构:const{a,b,...z}={a:1,b:2,c:3,d:4};console.log(a)//1console.log(b)//2console.log(z)//{c:3,d:4}16.Mandatoryparameters在速记JavaScript中,如果没有值传递给函数参数,则该参数是未定义的。要增强参数分配,请使用if语句抛出异常,或使用强制参数简写。functionfoo(bar){if(bar===undefined){thrownewError('Missingparameter!');}returnbar;}速记:mandatory=()=>{thrownewError('Missingparameter!');}foo=(bar=mandatory())=>{returnbar;}17.Array.find的简写如果要从数组中查找某个值,需要循环。在ES6中,find()函数可以达到同样的效果。constpets=[{type:'Dog',name:'Max'},{type:'Cat',name:'Karl'},{type:'Dog',name:'Tommy'},]functionfindDog(名字){for(leti=0;ipet.type==='Dog'&&pet.name==='Tommy');console.log(pet);//{type:'Dog',name:'Tommy'}18.Object[key]shorthand考虑验证函数functionvalidate(values){if(!values.first)returnfalse;if(!values.last)returnfalse;returntrue;}console.log(validate({first:'Bruce',last:'Wayne'}));//true假设需要不同的域和规则来验证,你能写一个通用的函数在运行时进行确认吗?//对象校验规则constschema={first:{required:true},last:{required:true}}//通用校验函数constvalidate=(schema,values)=>{for(fieldinschema){if(schema[field].required){if(!values[field]){returnfalse;}}}returntrue;}console.log(validate(schema,{first:'Bruce'}));//falseconsole.log(validate(schema,{first:'Bruce',last:'Wayne'}));//true现在已经有适用于各种情况的验证函数了,不用再为每个19写一个自定义的验证函数了。双非位操作的缩写是一个有效的用例是双重NOT运算符。它可以用来代替Math.floor(),它的优点是运行速度更快。您可以阅读本文以了解有关位操作的更多信息。Math.floor(4.9)===4//true简写:~~4.9===4//true