本文转载自公众号《阅读芯》(ID:AI_Discovery)JavaScript是目前最流行的编程语言之一。与任何其他编程语言一样,它有许多人们可以立即学习的技巧。这些技巧中的每一个都可以完成大多数开发人员每天需要完成的工作。读者可能已经从经验中了解其中一些,但对其他人感到惊讶。本文将介绍一系列技巧,使读者成为更好的开发人员并增强JavaScript技能。一起来看看吧~1.对象解构开发者一旦了解了对象解构,可能天天都会用到。但什么是解构?解构是一种JavaScript表达式,它允许将数组、对象、映射和集合中的数据提取到它自己的变量中。它允许您一次从一个或多个对象中提取属性。看看下面的例子,它有一个用户对象。如果要将用户名(名称)存储在变量中,则必须在新行中将其分配给变量。如果你想把性别也存储在一个变量中,你就得重复上面的操作。constuser={name:'Frank',age:23,gender:'M',member:false}constname=user.nameconstgender=user.gender使用解构,可以通过如下语法直接获取对象属性的变量:const{name,age,gender,member}=user;console.log(name)//Frankconsole.log(age)//23console.log(gender)//Mconsole.log(member)//false2.使用设备性能以获得更好的调试作为开发人员,您所做的最多就是调试。但是调试可不是用console.log在控制台打印一堆日志信息那么简单。您知道控制台对象是分析代码片段性能的好方法吗?大多数开发人员只知道使用标准的console.log方法来调试代码。控制台对象有很多有用的功能。它有一个time和timeEnd函数,可以帮助分析性能。它的工作原理非常简单。在被测代码之前调用console.time函数。该函数有一个参数,该参数接受描述所分析内容的字符串。在被测代码结束时,调用console.timeEnd函数。为该函数提供与第一个参数相同的字符串。运行代码所需的时间将显示在控制台中。console.time('loop')for(leti=0;i<10000;i++){//Dostuffhere}console.timeEnd('loop')3.Everyandsomefunctions每个和一些函数并不为所有开发者所熟知.但是,它们在某些情况下可能非常有用。先说一下every函数。如果你想知道数组中的所有元素是否都通过了某个测试,你可以应用这个函数。本质上,这是遍历数组中的每个元素并检查它们的属性是否为真。这听起来可能很抽象,所以请看下面的示例。没那么复杂。constrandom_numbers=[13,2,37,18,5]constmore_random_numbers=[0,-1,30,22]constisPositive=(number)=>{returnnumber>0}random_numbers.every(isPositive);//returnsstruemore_random_numbers.every(isPositive);//returnsfalse每个函数返回一个布尔值。如果数组中的所有元素都通过测试,则返回true。如果数组中的元素未通过测试,则返回false。也可以使用匿名函数作为测试函数:random_numbers.every((number)=>{returnnumber>0})some函数的工作方式几乎与every函数完全相同。这两个函数之间只有一个主要区别:some函数测试数组中是否至少有一个元素通过测试。回顾上面的例子,如果你使用some函数而不是every函数,那么两个数组都会返回“true”,因为两个数组都包含一个正数。constrandom_numbers=[13,2,37,18,5]constmore_random_numbers=[0,-1,30,22]constisPositive=(number)=>{returnnumber>0}random_numbers.some(isPositive);//returnstruemore_random_numbers.some(isPositive);//returnstrue4.有条件地设置一个变量有条件地设置一个变量很简单,而且可以让代码更漂亮。您无需编写if语句即可应用此技巧——这是我最喜欢的JavaScript技巧之一。那么如何有条件地设置变量呢?consttimezone=user.preferred_timezone||'America/New_York'上面的示例检查用户是否有首选时区。如果用户有首选时区,则使用该时区。如果用户没有首选时区,则使用默认时区“America/New_York”。这段代码看起来比使用if语句要干净得多。lettimezone='America/New_York'if(user.preferred_timezone){timezone=user.preferred_timezone}更简洁,不是吗?资料来源:Pexels5。将值转换为字符串数组有时需要将所有值转换为字符串数组。例如,当使用三等号(===)运算符检查数组中是否存在某个数字时,可能会出现这种情况。笔者最近遇到了一个多选控件的问题。Select选项的HTML值是字符串而不是整数,这是有道理的,选择值的数组看起来是这样的:letselected_values=['1','5','8']问题在于检查不成功所选值数组中是否存在整数。作者使用了一个使用三等号(===)运算符的Intersect函数。由于'5'!==5,必须找到解决方案。在我看来,最优雅的解决方案是将数组中的所有值都转换为整数。在进行试验时,我偶然发现了一个极其简单但美观的解决方案。selected_valuesselected_values=selected_values.map(Number)//[1,5,8]不用把所有的值都转成整数,只需改变参数就可以把数组中的值转成布尔值的地图功能。selected_valuesselected_values=selected_values.map(布尔)
