在JavaScript中自动进行类型转换

72 阅读3分钟

[

Erica N

](endubueze00.medium.com/?source=pos…)

埃里卡-N

关注

6月22日

-

3分钟阅读

[

保存

](medium.com/m/signin?ac…)

JavaScript中的自动类型转换

JavaScript如何自我调整,以便你的程序能够运行(如果它运行的话)

照片:Kristian StrandonUnsplash

你可以在你的程序中加入奇怪的计算方法,而JavaScript会有点接受它。

console.log(8 * null) // 0console.log("5" - 1) // 4console.log( "5" + 1) // "51"console.log("five" * 2) // NaN

当一个运算符被一个不正确的类型使用时,JavaScript会将该值转换为它需要的类型来进行计算。这就是所谓的*类型强制。*类型强制可能会导致意想不到的结果。

一个例子是当你用字符串做数学运算时。

console.log("5" + 2) // "52" not 7

JavaScript会认为你的意思是连接,而不是数字加法,它将把整数转换成字符串,并把这两个值粘在一起。

如果JavaScript不知道该把值改成什么类型,就会导致NaN

当使用等价运算符时,很容易预测到如果两个值相同,输出将为真,但让我们仔细检查一下。

console.log(0 == false) // trueconsole.log("" == false) // true

即使两个被比较的值不一样,上面的两个例子也是真的,因为有类型强制。JavaScript悄悄地将0"" 的类型改为布尔型,并输出true 。如果你希望所比较的项目正好相等,你会使用===

现在当使用三个相等的比较运算符时,上面的语句将输出false

console.log(0 === false) // falseconsole.log("" === false) // false

为了避免任何意外的类型强制,最好使用=== 操作符。

对于&&|| 操作符,有一种叫做短路操作的东西。根据运算符和输出,它将只评估右边或左边的内容。让我们仔细看一下。

对于|| 操作符,JavaScript将尝试把操作符左边的值转换为布尔值。如果JavaScript似乎无法将左边的值变成一个真实的值,它将默认右边的其他值。如果两个都是真值,它将默认为左边的原始值。

这里有一些例子。

console.log(null || "user") // "user"console.log("Agnes" || "user")

你可以用它来创建默认值。你将有你的初始值(左边的值)和你的替换值(右边的值)。如果其中一个值是空字符串或其他一些错误的值,JavaScript可以退回到第二个值。如果初始值和替换值都是假的,JavaScript将输出替换值。

这和&& 操作符是一样的,但是是相反的。JavaScript将输出可以改变为false的值,而不是输出为true的值。如果它们都是真值,那么它将输出替换值。

如果你想阅读更多的JavaScript基础知识文章,你可以在这里查看我最近的文章。

[

JavaScript基础知识。函数

在编程中,重复做一个任务是很常见的。比方说,你想把一连串的数字加在一起。

javascript.plainenglish.io

](javascript.plainenglish.io/javascript-…)

[

JavaScript基础知识。开关语句

当写一个if语句时,你可能想包括几个else if语句,但如果你想包括一个...

凤凰网

](levelup.gitconnected.com/javascript-…)

[

语法知识。三元运算符

在写if语句时,也有一种方法可以用三元运算符来缩短它。

级别提升.gitconnected.com

](levelup.gitconnected.com/javascript-…)

编码水平提高

谢谢你成为我们社区的一员!更多内容在Level Up Coding出版物中。
关注。Twitter,LinkedIn,Newsletter
Level Up正在改变科技招聘的方式 ➡️ 加入我们的人才集体