当前位置: 首页 > Web前端 > JavaScript

20个实用又专业的JavaScript技巧

时间:2023-03-27 01:20:06 JavaScript

我为你收集了一系列有用的JavaScript技巧,让你的代码看起来更优雅、更专业。我希望你会喜欢!1.单行If-Else在JavaScript中,可以使用三元条件运算符来压缩if-else语句。例如:constage=10;letgroup;//LONGVERSIONif(age>=18){group="Adult";}else{group="Child";}//SHORTHANDVERSIONgroup=age>18?“成人”:“儿童”;请记住,此简写是为了简洁。只有当它清楚地使表达式更容易理解时才使用它。2.空合并空合并运算符??如果左侧为空,则返回右侧。否则,它返回左边的值。这很有用,因为它省略了冗长的if检查。空合并的语法是:someValue??defaultValue例如:letsomeValue;//LONGEREXPRESSIONif(someValue){console.log(someValue)}else{console.log("Nothingfound")}//SHORTHANDconsole.log(someValue??"Nothingfound")输出:NothingfoundNothingfound3.可选链接在JavaScript中,您可以使用点符号来访问对象的属性和方法。示例:fruit.color但是,如果您尝试访问未定义对象的属性,您将看到一个错误。为避免这种情况,您需要确保在访问其属性之前定义了该对象:constcolor=fruit&&fruit.color;但这看起来并不甜蜜。您可以通过在点符号之前添加问号来使用可选链接,如下所示:constcolor=fruit?.color;让我们看一个真实的JS对象的例子:conststudent={name:"Ann",age:22,address:{state:"California"},};//LONGFORMconsole.log(student&&student.address&&student.address.ZIPCode);//SHORTHANDconsole.log(student?.address?.ZIPCode);output:undefinedundefined4.将任何值转换为布尔值在JavaScript中,您可以将任何值转换为布尔值。这是因为,在幕后,JavaScript中的一切都是“真”或“假”。要将任何内容转换为布尔值,请使用双感叹号!!。例如:!!true//true!!2//true!![]//true!!"Test"//true!!false//false!!0//false!!""//false5,传播您可以使用扩展运算符...将一个数组的元素扩展到另一个数组。例如,让我们使用扩展运算符组合两个数字数组:constnums1=[1,2,3];constnums2=[4,5,6];//长格式letnewArray=nums1.concat(nums2);//短格式newArray=[...nums1,...nums2];在向数组添加元素时,您还可以将.push()方法替换为扩展运算符。例如:letnumbers=[1,2,3];//更长的FORMnumbers.push(4);numbers.push(5);//SHORTHANDnumbers=[...numbers,4,5];6.使用扩展操作你可以使用扩展操作符...来解构一个对象的剩余值。为了演示,让我们创建一个学生对象。让我们将name和age属性分配给变量,将其余属性分配给第三个变量:conststudent={name:"Matt",age:23,city:"Helsinki",state:"Finland",};//更长的形式constname=student.name;constage=student.age;constaddress={city:student.city,state:student.state};//SHORTHANDconst{name,age,...address}=student;7.从数组中删除重复项您可以通过将数组转换为集合,然后将集合中的值添加回数组来删除数组中的重复项。这是有效的,因为集合是项目的唯一集合。也就是说,你不能在一个集合中有两个相同的值。因此,将数组转换为集合会在后台删除重复项。例如:constnums=[1,1,1,1,3,4,5]constuniqueNums=[...newSet(nums)];这是实现其效果的另一种方法:constnums=[1,1,1,1,3,4,5]constuniqueNums=Array.from(newSet(nums))顺便说一句,如果你需要一个独特的集合项目,为什么不使用一套?8.短路求值中的&&运算符你是否使用if检查表达式求值是否为真?您可以使用短路&&运算符对速记进行同样的操作。例如:varready=true;functionaction(){console.log("Yeah");}//LONGEREXPRESSIONif(ready){action();}//SHORTHANDready&&action();output:YeahYeah9,embedthevalue您可以将变量用反引号括起来并使用${}将变量嵌入到字符串中。例如:constage=41;constsentence=我今年${age}岁;//结果:我41岁这些字符串有时被称为“类固醇字符串”。10.对象属性赋值如果希望对象键和值同名,可以省略对象字面量。例如:constname="Luis",city="Paris",age=43,food="Spaghetti";//LONGEREXPRESSIONletperson={name:name,city:city,age:age,food:food};//SHORTHANDperson={姓名、城市、年龄、食物};11.默认值在JavaScript中,你可以拥有一个带有默认参数值的函数。这样,您可以在提供或不提供参数值的情况下调用函数。让我们看一个例子://LONGEREXPRESSIONfunctionpick(fruit){if(fruit===undefined){console.log("IjustpickedupaMango");}else{console.log(`IjustpickedaMango${fruit}`);}}//SHORTHANDfunctionpick(fruit="Mango"){console.log(我刚捡了一个${fruit})}pick("菠萝");//->我拿起一个Pineapplepick();//->我拿起一个Mango12。一行变量声明您可以将变量声明合并到一行中,而不是每个声明使用一行。例如://更长的形式letname;letage;letfavoriteFood="Pizza";//SHORTHANDletname,age,favoriteFood="Pizza";13.使用Object.values()方法将一个对象的所有值存储为一个数组,收集到一个数组中。例如:constinfo={name:"Matt",country:"Finland",age:35};//LONGERFORMletdata=[];for(letkeyininfo){data.push(info[key]);}//简写constdata=Object.values(info);14.查找数组中的元素使用内置的find()方法查找符合特定条件的元素。例如:constfruits=[{type:"Banana",color:"Yellow"},{type:"Apple",color:"Green"}];//LONGERFORMletyellowFruit;for(leti=0;ifruit.color==="黄色");15.要检查数组中的项目,可以使用includes()方法而不是indexOf()方法来检查元素是否在数组中。示例:设数字=[1,2,3];//LONGERFORMconsthasNumber1=numbers.indexOf(1)>-1//->True//SHORTHAND/CLEANERAPPROACHconsthasNumber1=numbers.includes(1)//->True16,多条件检查使用includes()方法来避免条件链。例如:constnum=1;//LONGERFORMif(num==1||num==2||num==3){console.log("Yay");}//SHORTHANDif([1,2,3].includes(num)){console.log("Yay");}17.一行代码赋多个值可以使用解构在一行代码中赋多个值。示例:让num1,num2;//更长的形式num1=10;num2=100;//速记[num1,num2]=[10,100];这也适用于对象:student={name:"Matt",age:29,};//更长的形式letname=student.name;letage=student.age;//SHORTHANDlet{name,age}=student;18.交换两个变量而不用第三个变量使用解构从数组中提取值。这可以应用于交换两个变量而不交换第三个变量。例如:letx=1;lety=2;//更长的格式lettemp=x;x=y;y=temp;//SHORTHAND[x,y]=[y,x];19,Math.pow()速记不使用Math.pow()函数对数字取幂,而是使用**运算符作为速记://LONGERFORMMath.pow(4,2);//16Math.pow(2,3);//8//SHORTHAND4**2//162**3//820,Math.floor()速记您可以使用~~运算符作为速记,而不是使用Math.floor()函数将数字向下舍入://长格式Math.floor(5.25)//->5.0//简码~~5.25//->5.0