20个实用而专业的javascript技巧

Monstart      2022-02-10     563

关键词:

我为你收集了一系列有用的 JavaScript 技巧,让你的代码看起来更优雅和专业。我希望你会喜欢它!
1、单线 If-Else
在 JavaScript 中,你可以使用三元条件运算符来压缩 if-else 语句。
例如:
const age = 10;
let group;

// LONG VERSION
if (age >= 18) {
group = "Adult";
} else {
group = "Child";
}

// SHORTHAND VERSION
group = age > 18 ? "Adult" : "Child";
请记住,这个简写是为了使代码更简洁。只有当它清楚地使表达更容易理解时才使用它。

2、空合并

空合并运算符 ?? 如果左侧为空,则返回右侧。否则,它返回左边的值。这很有用,因为它省略了冗长的 if 检查。

空合并的语法是:

someValue ?? defaultValue
例如:

let someValue;

// LONGER EXPRESSION
if(someValue){
console.log(someValue)
} else {
console.log("Nothing found")
}

//SHORTHAND
console.log(someValue ?? "Nothing found")
输出:

Nothing found
Nothing found
3、可选链

在 JavaScript 中,你可以使用点表示法访问对象的属性和方法。

例如:

fruit.color
但是,如果你尝试访问未定义对象的属性,你将看到错误。为避免这种情况,你需要确保在访问其属性之前定义该对象:

const color = fruit && fruit.color;
但这看起来并不甜。你可以通过在点符号前添加一个问号来使用可选链接,如下所示:

const color = fruit?.color;
让我们看一个真实 JS 对象的例子:

const student = {
name: "Ann",
age: 22,
address: {

state: "California"

},
};

// LONG FORM
console.log(student && student.address && student.address.ZIPCode);

// SHORTHAND
console.log(student?.address?.ZIPCode);
输出:

undefined
undefined
4、将任何值转换为布尔值

在 JavaScript 中,你可以将任何内容转换为布尔值。这是因为,在底层,JavaScript 中的一切要么是“True”,要么是“False”。

要将任何内容转换为布尔值,请使用双感叹号 !!。

例如:

!!true // true
!!2 // true
!![] // true
!!"Test" // true

!!false // false
!!0 // false
!!"" // false
5、传播

你可以使用扩展运算符 ... 将一个数组的元素扩展到另一个数组中。

例如,让我们使用扩展运算符将两个数字数组合并在一起:

const nums1 = [1, 2, 3];
const nums2 = [4, 5, 6];

// LONG FORM
let newArray = nums1.concat(nums2);

// SHORTHAND
newArray = [...nums1, ...nums2];
在向数组添加元素时,你还可以将 .push() 方法替换为扩展运算符。

例如:

let numbers = [1, 2, 3];

// LONGER FORM
numbers.push(4);
numbers.push(5);

// SHORTHAND
numbers = [...numbers, 4, 5];
6、 使用扩展运算符进行解构

你可以使用扩展运算符 ... 来解构对象的剩余值。

为了演示,让我们创建一个学生对象。让我们将 name 和 age 属性分配给变量,并将剩余的属性分配给第三个变量:

const student = {
name: "Matt",
age: 23,
city: "Helsinki",
state: "Finland",
};

// LONGER FORM
const name = student.name;
const age = student.age;
const address = { city: student.city, state: student.state };

// SHORTHAND
const { name, age, ...address } = student;
7、从数组中删除重复项

你可以通过将数组转换为集合,然后将集合中的值添加回数组来删除数组的重复项。

这是有效的,因为集合是唯一的项目集合。

换句话说,一个集合中不能有两个相同的值。因此,将数组转换为集合会删除引擎盖下的重复项。

例如:

const nums = [1,1,1,1,3,4,5]
const uniqueNums = [...new Set(nums)];
这是实现其效果的另一种方法:

const nums = [1,1,1,1,3,4,5]
const uniqueNums = Array.from(new Set(nums))
顺便说一句,如果你需要一组独特的物品,为什么不使用 set 呢?

8、短路评估中的 && 运算符

你是否使用 if 检查来查看表达式的计算结果是否为真?

你可以使用短路 && 运算符对速记进行相同的操作。

例如:

var ready = true;

function action(){
console.log("Yeah");
}

// LONGER EXPRESSION
if(ready){
action();
}

// SHORTHAND
ready && action();
输出:

Yeah
Yeah
9、将值嵌入到字符串中

你可以通过将字符串包装在反引号内并使用 ${} 将变量嵌入到字符串中。

例如:

const age = 41;
const sentence = I'm ${age} years old;

// result: I'm 41 years old
这些字符串有时被称为“类固醇字符串”。

10、对象属性分配

如果你希望对象键与值具有相同的名称,则可以省略对象文字。

例如:

const name = "Luis", city = "Paris", age = 43, food = "Spaghetti";

// LONGER EXPRESSION
let person = {
name: name,
city: city,
age: age,
food: food
};

// SHORTHAND
person = { name, city, age, food };
11、默认值

在 JavaScript 中,你可以拥有一个带有默认参数值的函数。

通过这种方式,你可以在提供或不提供参数值的情况下调用该函数。

让我们看一个例子:

// LONGER EXPRESSION
function pick(fruit) {
if(fruit === undefined){

console.log("I just picked up a Mango");

} else {

console.log(`I just picked up a ${fruit}`);

}
}

// SHORTHAND
function pick(fruit="Mango") {
console.log(I just picked up a ${fruit})
}

pick("Pineapple"); // -> I picked up a Pineapple
pick(); // -> I picked up a Mango
12、一行声明变量

你可以将变量声明合并为一行,而不是每个声明使用一行。

例如:

// LONGER FORM
let name;
let age;
let favoriteFood = "Pizza";

// SHORTHAND
let name, age, favoriteFood = "Pizza";
13、对象值作为数组

使用 Object.values() 方法将一个对象的所有值收集到一个数组中。

例如:

const info = { name: "Matt", country: "Finland", age: 35 };

// LONGER FORM
let data = [];
for (let key in info) {
data.push(info[key]);
}

// SHORTHAND
const data = Object.values(info);
14、在数组中查找元素

使用内置的 find() 方法查找与特定条件匹配的元素。

例如:

const fruits = [
{ type: "Banana", color: "Yellow" },
{ type: "Apple", color: "Green" }
];

// LONGER FORM
let yellowFruit;
for (let i = 0; i < fruits.length; ++i) {
if (fruits[i].color === "Yellow") {

yellowFruit = fruits[i];

}
}

// SHORTHAND
yellowFruit = fruits.find((fruit) => fruit.color === "Yellow");
15、检查数组中的项

你可以使用 includes() 方法,而不是使用 indexOf() 方法来检查元素是否在数组中。

例如:

let numbers = [1, 2, 3];

// LONGER FORM
const hasNumber1 = numbers.indexOf(1) > -1 // -> True

// SHORTHAND/CLEANER APPROACH
const hasNumber1 = numbers.includes(1) // -> True
16、多条件检查

使用 includes() 方法避免条件链。

例如:

const num = 1;

// LONGER FORM
if(num == 1 || num == 2 || num == 3){
console.log("Yay");
}

// SHORTHAND
if([1,2,3].includes(num)){
console.log("Yay");
}
17、用一行代码分配多个值

你可以使用解构在一行代码中分配多个值。

例如:

let num1, num2;

// LONGER FORM
num1 = 10;
num2 = 100;

// SHORTHAND
[num1, num2] = [10, 100];
这也适用于对象:

student = {
name: "Matt",
age: 29,
};

// LONGER FORM
let name = student.name;
let age = student.age;

// SHORTHAND
let { name, age } = student;
18、在没有第三个变量的情况下交换两个变量

使用解构从数组中提取值。这可以应用于在没有第三个的情况下交换两个变量。

例如:

let x = 1;
let y = 2;

// LONGER FORM
let temp = x;
x = y;
y = temp;

// SHORTHAND
[x, y] = [y, x];
19、 Math.pow() 简写

你可以不使用 Math.pow() 函数来将数字求幂,而是使用 ** 运算符作为速记:

// LONGER FORM
Math.pow(4,2); // 16
Math.pow(2,3); // 8

// SHORTHAND
4**2 // 16
2**3 // 8
20、 Math.floor() 简写

你可以使用 ~~ 运算符作为简写,而不是使用 Math.floor() 函数来向下舍入数字:

// LONG FORM
Math.floor(5.25) // -> 5.0

// SHORTHAND
~~5.25 // -> 5.0

前端知识:12个非常实用的javascript小技巧

在这篇文章中将给大家分享12个有关于JavaScript的小技巧。这些小技巧可能在你的实际工作中或许能帮助你解决一些问题。使用!!操作符转换布尔值有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存... 查看详情

41个web开发者必须收藏的javascript实用技巧

1.将彻底屏蔽鼠标右键oncontextmenu=”window.event.returnValue=false”<tableborderoncontextmenu=return(false)><td>no</table>可用于Table2.取消选取、防止复制<bodyonselectstart=”returnfalse”>3.JS不允许粘贴onpa 查看详情

速度收藏20个常用的python技巧,太赞啦(代码片段)

...大量时间,下面的技巧将在你的日常编码练习中非常实用。1.字符串反转使用Python切片反转字符串:\\#Reversingastringusingslicingmy\\_string\\="ABCDE 查看详情

finalcutproxformac(fcpx专业视频剪辑工具)实用技巧篇!

FinalCutProXforMac是一款非常强大的专业视频剪辑工具,全球很多人都在用!现在小编给大家带来一些关于FinalCutProXforMac的使用技巧,希望对大家以后的应用能有所帮助!FinalCutProXforMac节省空间做了几个视频,发现几个G的硬盘空间... 查看详情

继续分享5个实用的vs调试技巧(代码片段)

继续分享5个实用的vs调试技巧原总结调试vs2019vs前言我在上一篇文章《5个非常实用的vs调试技巧》中分享了5个我认为非常值得了解的vs调试技巧,本周继续分享5个很基础但同样实用的调试技巧。1.条件断点作用简介:顾名思义,... 查看详情

15个常用的javascript简写技巧

...让你用更少的代码实现你的目标。让我们一个一个来看看JavaScript的简写技巧吧。1、变量声明let x; let y = 20; // 查看详情

25个实用编程小技巧

...作保持激情和兴奋感、始终学习的态度,还需要掌握一些实用高效的编程技巧,这样对于提升工作乐趣和效率大有裨益。今天小编就跟大家分享一下25个实用编程小技巧,希望可以给开发编程人员的工作和学习带来更多的思考。... 查看详情

16个实用的matplotlib绘图小技巧

来源:网络今天给大家介绍16个Matplotlib绘图实用的小技巧:1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'Si 查看详情

16个实用的matplotlib绘图小技巧

来源:网络今天给大家介绍16个Matplotlib绘图实用的小技巧:1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'Si 查看详情

[c#]几个超级实用但很少人知道的vs技巧

大家好,今天分享几个我知道的实用VS技巧,而这些技巧我发现很多人都不知道。因为我经常在工作中遇到:我在同事电脑上解决问题,或在会议上演示代码示例时,使用了一些VS“骚”操作,他们会好奇... 查看详情

[c#]几个超级实用但很少人知道的vs技巧

大家好,今天分享几个我知道的实用VS技巧,而这些技巧我发现很多人都不知道。因为我经常在工作中遇到:我在同事电脑上解决问题,或在会议上演示代码示例时,使用了一些VS“骚”操作,他们会好奇... 查看详情

分享16个matplotlib绘图实用小技巧!

今天给大家介绍16个Matplotlib绘图实用的小技巧。1.添加标题-titlematplotlib.pyplot对象中有个title()可以设置表格的标题。importnumpyasnpimportmatplotlib.pyplotasplt#显示中文plt.rcParams['font.sans-serif']=[u'SimHei']plt.rcPar 查看详情

任何时候都适用的20个c++技巧(代码片段)

...sp;Page1:Introduction 介绍接下来的这几条技巧主要集中于实用技术和一些晦涩知识上;它们与特殊的平台、编程领域、或编译器无关。因此,它们适用于所有的C++程序员。本人把这些技巧划分为五大类:编码风格、内存管理、性... 查看详情

超实用的jquery小技巧(代码片段)

JQuery是一个JavaScript库,她极大的简化了我们对JavaScript的编程。今天我们总结了下平常项目中用到的一些小技巧,仅供参考。1、替换元素//替换元素$(document).ready(function()$("#id").replaceWith(‘<p>Ihavebeenrepaced</p>‘));2、延时加... 查看详情

20个chromedevtools调试技巧(代码片段)

译者按: ChromeDevTools很强大,甚至可以替代IDE了!原文: ArtofdebuggingwithChromeDevTools为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。谷歌开发者工具提供了一系列的功能来帮助开... 查看详情

别让速度限制了你的工资!这5个实用高效的word技巧赶快学起来!

...仅用起来酷炫,还能让你的工作效率直线上升,真的超级实用。今天小编就给大家分享5个Word技巧,一起来看看吧!别让速度限制了你的工资!这5个实用高效的Word技巧赶快学起来!1.快速统一图片的大小尺寸在Word文档中插入一... 查看详情

oneapm大讲堂|提高javascript性能的30个技巧

...页开发人员?想创建超快速的网站吗?今天我们来看看 JavaScript,这项神奇而又复杂的技术。它使网站内容更加丰富,但常常出现的运行性能问题又降低了用户的体验。事实已经证明,最佳的终端用户体验能提升网站的转换率、... 查看详情

5个冷门且实用的kubectl使用技巧

kubectl是K8s官方附带的命令行工具,可以方便的操作K8s集群。这篇文章主要介绍一些kubectl的别样用法,希望读者有一定基础的K8s使用经验。有一篇文章也介绍了一些技巧,写博客的时候正好搜到了,正好也分享出来吧。Ready-to-usec... 查看详情