现代 JavaScript 初学者指南 - 第一部分
目录📦
您正在开始编写 JavaScript 代码。您如何知道您编写的 JS 是好是坏?
这是一份 JavaScript 入门迷你指南。
好的,让我们从这份充满技巧和窍门的精彩指南开始吧。获取一些
目录📦
变量
用来let
定义可能改变的变量,用来定义const
不应该改变的变量。现在你永远不应该使用var
。
理解 let 和 const
用于let
应用程序中某个时刻会发生改变的变量。
用于const
永远不会改变的变量。
了解旧变量
你不应该再使用var
。🙅♂️
旧的“var” ℹ️
发现神秘的 NaN
NaN 表示非数字。🤯
这是检查数字是否为 NaN 的最佳方法。
- 行(1):尝试将字符串解析
55px
为数字,但由于无法解析,因此返回NaN
,所以result
是NaN
。 - 行(3):检查结果是否
NaN
为真。 - 行(4):检查是否
'this is false baby!'
为,因为不是 ,NaN
所以为假。String
NaN
- 行(5):检查是否
NaN
为NaN
,因为是,所以为真NaN
。
如何对对象进行类型检查
这是检查对象类型的最佳方法。
函数默认参数
这是为您的函数定义默认参数的最佳方法。
- 行(1):通过使用
name =
它,您可以为函数参数定义一个默认参数。 - 行(5):覆盖默认参数。
- 行(6):使用默认参数。
剩余参数
无论如何定义,都可以使用任意数量的参数来调用函数。
还是不明白?是啊,我当时也是这样。🤷
基本上,这允许你发送任意数量的参数,它们最终会转换成一个数组。让我们看看实际效果⚡
- 第(1)行:通过使用
...prices
它,您可以传递任意数量的属性 - 行(7):使用作为参数调用该函数
10, 50, 35, 42, 28
。
但是假设你想要额外的参数......
- 第(1)行:通过使用
...prices
它允许传递任意数量的属性 - 行(6):使用作为参数调用该函数
'Jhon', 'jhon@example.com', 10, 50, 35, 42, 28
。
注意:额外的参数首先出现,其他参数随后出现(这些被称为“其余”😜)。
回调函数
好了,孩子们,这很重要。所以,你们最好注意听。
作为参数传递给另一个函数的函数,通常在事件发生时被调用。
简介:回调ℹ️
如您所见,我们定义了一个以名称和函数作为参数的函数。
sayHello
输出“Hello, Jhon”,然后调用sayGoodbye
输出“Goodbye, Jhon”的函数。注意,sayGoodbye 需要 name 参数。
“this”关键字
好吧,这个问题有点棘手。这是一个相当大的话题,所以……我把你们重定向到我的一篇文章:JavaScript OOP 最大的陷阱😅
对象方法,“this” ℹ️
简写属性
- 行(7):使用变量
name
来分配一个property
具有变量值的“名称”name
。 - 行(8):使用变量
beer
为名为“gas”的气体分配变量key
的值gas
。
如果你不明白,喝点啤酒,过会儿再回来🍻
解构对象属性
希望你仍然清醒🥴
解构赋值是一种特殊的语法,它允许我们将数组或对象“解包”成一堆变量,有时这样更方便。解构也适用于具有大量参数、默认值等的复杂函数。
解构赋值ℹ️
- 行(10):定义一个对象,不用担心,它将被用作定义新变量的一种方式,这意味着该对象没有被分配到任何地方。
- 行(11)
name
:从中获取属性robot
并定义一个变量name
。 - 行(12)
stealing
:从中获取属性robot
。skills
并定义一个变量stealing
。 - 行(13):获取其余属性
robot
并将它们分配给变量rest
。 - 行(14):用于
robot
定义变量。
值存在性检查
这是检查给定对象上是否存在某个值的最佳方法。
- 行(6):检查计算机对象上是否存在一个属性,其值等于
127.0.0.1
属性存在性检查
有几种方法可以检查对象上某个属性的存在。
- 行(5):当对象有太多键时,性能不佳。
- 行(6):即使对象有太多键,也能表现良好。
浅拷贝对象
浅拷贝将复制顶级属性,但嵌套对象在原始(源)和副本(目标)之间共享。
让我们来实验一下:
- 行(9):对对象进行浅拷贝
robot
。 - 行(19):将
robotClone
速度更新为800
。
🐞 WOOT 🐞 我们修改了两个机器人speed
,它们robotClone.skills
共享robot.skills
对对象的引用,因为没有进行单独的复制,而是复制了对对象的引用。对对象任何属性的更改都会影响使用该对象的所有引用。
注意:当您的对象具有嵌套属性时,不要进行浅复制(除非您确实想要这种行为),而是使用深复制。
深复制对象
这是进行深度复制的最佳方法。
通过使用深拷贝与浅拷贝,你可以注意到对原始对象没有副作用🎉
解构数组
这与解构对象非常相似,但是因为数组没有键而是位置,所以我们需要访问我们想要返回的位置。
- 行(1):定义一个多维数组(您也可以使用常规数组,但我想向您展示这个东西的威力💪)。
- 第(3)行:我们定义一个变量
firstRobotName
,其值为robots[0]
,即['Bender', 'Steal']
。然后定义一个变量secondRobotState
(注意,我们跳过了机器人名称,而是取其状态'Cool'
)。最后定义一个变量rest
来保存数组的其余部分。
继续学习🤓
最后的想法和下一步
我们已经尝试了一些现代概念,作为初学者您应该理解这些概念,其中一些技巧和窍门是当今完成我们过去使用 JavaScript 传统所做的事情的“最佳方式”。
写这篇文章的过程很愉快,希望你能从中受益匪浅。现在,请收藏它,以便快速查阅日常的 JS 技巧。
我很想听听你还想学习什么其他东西,这样我就可以把它们包含在现代 JavaScript 初学者指南的第 2 部分中,其中会充满非常酷的东西。👋
文章来源:https://dev.to/victorhazbun/modern-javascript-beginners-guide-part-1-4c10