介绍
在JavaScript中, 数据类型用于对一种特定类型的数据进行分类,确定可以分配给类型的值,以及可以对其执行的操作。
尽管由于类型强制 ,JavaScript会自动转换许多值,通常最佳做法是在类型之间手动转换值,以达到预期的结果。
本教程将引导您转换JavaScript的原始数据类型,包括数字,字符串和布尔值。
隐性转换
作为一种编程语言,JavaScript非常容忍意想不到的价值。 因此,JavaScript将尝试转换意外的值,而不是直接拒绝它们。 这种隐式转换称为类型强制。
一些方法将自动转换值以便使用它们。 alert()
方法以字符串为参数,但会自动将其他类型转换为字符串。 所以,我们可以传递一个数值给方法:
alert(8.5);
如果我们运行上面的行,浏览器将返回一个显示8.5
值的弹出式警报对话框,除非它将转换为字符串才能执行此操作。
当使用可以用数学运算符对数字求值的字符串时,您会发现JavaScript可以通过将字符串隐式转换为数字来处理这些值,如下面的示例所示。
// Subtraction
"15" - "10";
Output5
// Modulo
"15" % "10";
Output5
但是,并不是每个操作员都会按预期工作。 +
运算符是显着的问题,因为它可以表示加法或字符串连接 。
// When working with strings, + stands for concatenation
"2" + "3";
Output"23"
由于+
运算符是多用途的,尽管数字字符串为2
和3
的字符串值连接到字符串值23
而不是一起添加为数字5
。
由于歧义可能存在,有时会导致意想不到的结果,通常最好在代码中尽可能明确地转换数据类型。 这将有助于管理用户的输入和处理错误。
将值转换为字符串
可以通过调用String()
或n.toString()
将值显式转换为字符串。
使用String()
函数,通过将值true
传递给String()
的参数,我们将一个布尔值转换为一个字符串。
String(true);
当我们这样做时,将返回字符串文字"true"
。
Output"true"
或者,我们可以将一个数字传递给函数。
String(49);
该数字的字符串字面值将被返回。
Output"49"
我们使用String()
函数和一个变量。 我们将为变量odyssey
分配一个数值,然后使用typeof
运算符来检查类型。
let odyssey = 2001;
console.log(typeof odyssey);
Outputnumber
在这一点上,变量odyssey
被分配了2001
的数值,我们已经确认是一个数字。
现在,让我们重新分配odyssey
到其字符串等效项,然后使用typeof
来确认我们已经将变量的值从一个数字成功转换为一个字符串。
odyssey = String(odyssey); // "2001"
console.log(typeof odyssey);
Outputstring
在上面的例子中,我们已经确认odyssey
被重新分配为与数据类型转换后的字符串值相当。
我们可以以类似的方式使用n.toString()
。 我们可以用变量替换n
:
let blows = 400;
blows.toString();
变量将作为字符串返回。
Output"400"
或者,我们可以在括号内放一个值,而不是使用n.toString()
的变量:
(1776).toString(); // returns "1776"
(false).toString(); // returns "false"
(100 + 200).toString(); // returns "300"
通过使用String()
或n.toString()
我们能够将布尔值或数字数据类型的值显式转换为字符串值,以确保我们的代码按照我们预期的方式运行。
将值转换为数字
将值转换为数字数据类型时,我们将使用Number()
方法。 首先,我们将数字文本的字符串转换为数字,但是我们也可以转换布尔值。
我们可以将一个数字的字符串传递给Number()
方法:
Number("1984");
字符串将被转换为一个数字,不再包含在引号内。
Output1984
我们也可以为变量分配一个字符串,然后将其转换。
let dalmatians = "101";
Number(dalmatians);
Output101
字符串文字"101"
通过其变量转换为数字101
。
白色空格或空字符串的字符串将转换为0
。
Number(" "); // returns 0
Number(""); // returns 0
请注意,非数字字符串将转换为代替N 个 N的 NaN
。 这包括用空格分隔的数字。
Number("twelve"); // returns NaN
Number("20,000"); // returns NaN
Number("2 3"); // returns NaN
Number("11-11-11"); // returns NaN
对于布尔数据类型, false
将计算为0
, true
将计算为1
。
Number(false); // returns 0
Number(true); // returns 1
Number()
方法将非数字数据类型转换为数字。
将值转换为布尔值
要将数字或字符串转换为布尔值,使用Boolean()
方法。 例如,这可以用于确定用户是否将数据输入到文本字段中。
解释为空的任何值,如数字0
,空字符串或未定义的值或NaN
或null
都将转换为false
。
Boolean(0); // returns false
Boolean(""); // returns false
Boolean(undefined); // returns false
Boolean(NaN); // returns false
Boolean(null); // returns false
其他值将被转换为true
,包括由空格组成的字符串文字。
Boolean(2000); // returns true
Boolean(" "); // returns true
Boolean("Maniacs"); // returns true
请注意, "0"
作为字符串文字将转换为true
因为它是非空字符串值:
Boolean("0"); // returns true
将数字和字符串转换为布尔值可以使我们以二进制方式评估数据,并可用于我们程序中的控制流程。
结论
本教程介绍了JavaScript如何处理其原始数据类型的转换。 虽然由于类型强制,但是在许多情况下,数据类型将被隐式转换,明确转换数据类型是一个很好的习惯,以确保程序正常运行。
要了解有关JavaScript数据类型的更多信息,请阅读“ 了解 JavaScript中的数据类型”。要查看数据类型转换在其他编程语言中的完成情况,请查看“ 如何在Python 3中转换数据类型 ”。