JavaScript类型转换
类型转换
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。
例如,alert自动将任何值转换为字符串以显示它。数学运算将值转换为数字。
在某些情况下,我们需要将值显式转换为预期类型。
数值转换规则:
undefined 变成 NaN
null 变成 0
true and false 变成 1 和 0
string 变成 开头和结尾的空格被删除。如果剩余的字符串为空,则结果为0。否则,该数字将从字符串中“读取”。一个错误给出NaN。
例子:
alert( Number(" 123 ") ); // 123 alert( Number("123z") ); // NaN (error reading a number at "z") alert( Number(true) ); // 1 alert( Number(false) ); // 0
请注意,null和undefined不同的表现这里:null变为零,而undefined成为NaN。
大多数数学运算符也执行这种转换,我们将在下一章中看到。
这里撇开对象不谈
在本章中,我们不会涉及对象。现在我们只讨论基元。
稍后,在我们了解了对象之后,在对象到基元转换一章中,我们将看到对象是如何适应的。
字符串转换
当我们需要一个值的字符串形式时,就会发生字符串转换。
例如,alert(value)它是否显示值。
我们还可以调用String(value)函数将值转换为字符串:
let value = true; alert(typeof value); // boolean value = String(value); // now value is a string "true" alert(typeof value); // string
字符串转换最明显。Afalse变成"false",null变成"null"等。
数字转换
数字转换自动发生在数学函数和表达式中。
例如,当除法/应用于非数字时:
alert( "6" / "2" ); // 3, strings are converted to numbers
我们可以使用该Number(value)函数将 a 显式转换value为数字:
let str = "123"; alert(typeof str); // string let num = Number(str); // becomes a number 123 alert(typeof num); // number
当我们从基于字符串的源(如文本表单)读取值但期望输入数字时,通常需要显式转换。
如果字符串不是有效数字,则此类转换的结果为NaN。例如:
let age = Number("an arbitrary string instead of a number"); alert(age); // NaN, conversion failed
布尔转换
布尔转换是最简单的一种。
它发生在逻辑操作中(稍后我们将遇到条件测试和其他类似的事情),但也可以通过调用Boolean(value).
转换规则:
价值观是直观的“空”,就像0一个空字符串,null,undefined,和NaN,成为false。
其他值变为true.
例如:
alert( Boolean(1) ); // true alert( Boolean(0) ); // false alert( Boolean("hello") ); // true alert( Boolean("") ); // false
请注意:带零的字符串"0"是true
有些语言(即PHP)会将"0"转换为false。但在 JavaScript 中,非空字符串总是true.
alert( Boolean("0") ); // true alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
概括总结
三种最广泛使用的类型转换是字符串、数字和布尔值。
String Conversion– 当我们输出一些东西时发生。可以用String(value). 对于原始值,转换为字符串通常是显而易见的。
Numeric Conversion– 发生在数学运算中。可以用Number(value).
人们通常会犯错误是:
undefined是NaN一个数字,而不是0。
"0"和仅空格字符串之类" "的作为布尔值是true。
此处不涉及对象。在我们了解了有关 JavaScript 的更多基本知识之后,我们将在专用于对象的对象到原始转换一章中稍后返回它们。