paint-brush
什么是 JavaScript 中的类型强制和类型转换?经过@kirmani
6,315 讀數
6,315 讀數

什么是 JavaScript 中的类型强制和类型转换?

经过 Kirmani4m2023/05/25
Read on Terminal Reader

太長; 讀書

在编程语言中,数据分为各种类型,例如整数、字符串、浮点数和布尔值。将数据从一种类型转换或强制转换为另一种类型的能力对于执行操作、操纵数据以及确保程序内数据的兼容性和一致性至关重要。类型强制是指当不同类型的数据在一个操作中一起使用时,发生在 JavaScript 中的数据类型的自动转换。
featured image - 什么是 JavaScript 中的类型强制和类型转换?
Kirmani HackerNoon profile picture
0-item
1-item

类型强制和类型转换是编程中的基本概念,涉及将数据从一种类型转换为另一种类型。在编程语言中,数据分为各种类型,例如整数、字符串、浮点数和布尔值。将数据从一种类型转换或强制转换为另一种类型的能力对于执行操作、操纵数据以及确保程序内数据的兼容性和一致性至关重要。

类型强制:

类型强制是指在一个操作中同时使用不同类型的数据时, JavaScript中发生的数据类型的自动转换。例如,如果将一个数字和一个字符串相加,JavaScript 会自动将数字转换为字符串来执行操作。

 const num = 5; const str = "3"; console.log(num + str); //output: "53"


在上面的示例中,数字 5 自动转换为字符串“5”,以便它可以与字符串“3”连接以提供输出“53”。类型强制的其他一些示例包括:


  • 使用==!=运算符进行比较,在进行比较之前执行类型强制
  • 在值前使用一元加号 ( + ) 运算符将对 Number 执行类型强制。但是, +号只能出现一次,后面不能跟空格。


例如:

 const x = "5"; const y = +x; console.log(typeof y); // output: number


人们通常认为,在 JavaScript 中的值开头使用一元+运算符是Number函数的简写。然而,这种情况并非如此。一元+运算符和Number函数都使用相同的算法将字符串转换为数字,但存在细微差别。


例如,虽然+在遇到BigInt时会抛出TypeErrorNumber()会返回BigInt的数字值,但可能会丢失精度。如果您以相同的方式在字符串前使用一元否定 ( - ) 运算符,也会发生强制转换。


  • 使用if语句,在进行比较之前将值强制转换为布尔值

  • 使用&&||?:运算符,它将在执行操作之前将值强制转换为布尔值。


类型铸造:

另一方面,类型转换是指数据类型的显式转换。这是使用转换函数完成的,例如Number()String()Boolean()Symbol()

 const str = '5'; const num = Number(str); console.log(num); //output: 5


在本例中,变量num是数字类型,但我们使用String()函数将其显式转换为字符串。让我们看一下 JavaScript 中的几个类型转换函数,以及演示它们用法的示例代码:


  • Number()Number()函数用于将非数值转换为数值。例如,如果要将字符串值“10”转换为数字,可以使用Number()函数,如下所示:
 const x = "5"; const y = x+10 const z= Number(x)+10; console.log(y); // output: 510 console.log(z); // output: 15


  • parseInt()parseInt函数用于将值转换为整数。它与Number()parseFloat()不同,因为它忽略小数点后的任何值。例如:
 const intValue = parseInt("3.14"); console.log(floatValue); // Output: 3


  • parseFloat()parseFloat()函数用于将字符串值转换为浮点数。除了某些情况外,它与Number()非常相似。让我们看下面的例子,看看parseFloat()parseInt()Number()的比较:
 console.log(parseInt('22.5')); // Output: 22 console.log(parseFloat('22.5')); // Output: 22.5 console.log(Number('22.5')); // Output: 22.5 console.log(parseInt('070')); // Output: 70 console.log(parseFloat('070')); // Output: 70 console.log(Number('070')); // Output: 70 console.log(parseInt('1234blue')); // Output: 1234 console.log(parseFloat('1234blue')); // Output: 1234 console.log(Number('1234blue')); // Output: NaN console.log(parseInt('0xFF')); // Output: 255 console.log(parseFloat('0xFF')); // Output: 0 console.log(Number('0xFF')); // Output: 255 console.log(parseInt("10 20 30")); // 10 console.log(parseFloat("10 20 30")); // 10 console.log(Number("10 20 30")); // NaN


  • String()String()函数用于将非字符串值转换为字符串值。下面的示例显示了如何使用String()函数将不同类型的值转换为字符串:
 const num = 10; console.log(String(num)); // "10" const bool = true; console.log(String(bool)); // "true" const obj = {name: "John"}; console.log(String(obj)); // "[object Object]" const arr = [1, 2, 3]; console.log(String(arr)); // "1,2,3" const date = new Date(); console.log(String(date)); // "Sun Jan 29 2023 18:52:01 GMT+0000 (Coordinated Universal Time)"


  • Boolean()Boolean函数用于将非布尔值转换为布尔值。例如,如果你想将数字值 0 转换为布尔值,你可以像这样使用Boolean()
 let value = 0; console.log(Boolean(value)); // false value = "hello"; console.log(Boolean(value)); // true value = undefined; console.log(Boolean(value)); // false value = {}; console.log(Boolean(value)); // true value = -1; console.log(Boolean(value)); // true


就是这样,伙计们。我希望本文能帮助您了解 JavaScript 中类型转换的来龙去脉。您现在已经掌握了如何将变量显式转换为不同类型(类型转换)以及 Javascript 如何隐式转换(类型强制)。


不断练习和试验这些功能以掌握它们。不要忘记点赞、分享、关注和评论您可能有的任何问题。编码愉快!

专家提示:

使用严格相等比较===而不是抽象相等比较==避免依赖 JavaScript 的隐式类型强制转换,尤其是在算术运算中,并始终在必要时使用类型转换。


也发布在这里。