介绍
在 JavaScript 中, 数据类型用于分类一个特定类型的数据,确定您可以分配给类型的值以及您可以执行的操作。
虽然由于 type coercion ,JavaScript会自动转换许多值,但通常是最好的做法来手动转换不同类型的值,以达到预期的结果。
本教程将指导您转换JavaScript的原始数据类型,包括数字,字符串和布尔文。
暗示转换
作为一个编程语言,JavaScript 对意想不到的值非常容忍,因此,JavaScript 会试图转换意想不到的值,而不是完全拒绝它们。
某些方法会自动转换值,以便使用它们。 alert()
方法将一个字符串作为其参数,但它会自动将其他类型转换为字符串。因此,我们可以将一个数字值传递给该方法:
1alert(8.5);
如果我们运行上面的行,浏览器将返回一个 pop-up 警告对话框,显示8.5
值,但它将被转换为一个字符串来这样做。
当您使用可以用 [数学运算符] 进行数值评估的字符串(https://andsky.com/tech/tutorials/how-to-do-math-in-javascript-with-operators)时,您会发现 JavaScript 可以通过默认地将字符串转换为数字来处理这些值,如下面的示例所示。
1// Subtraction
2"15" - "10";
1[secondary_label Output]
25
1// Modulo
2"15" % "10";
1[secondary_label Output]
25
然而,并非每个操作员都将按预期运作。 +
操作员尤其有问题,因为它可以表示附加或 string concatenation。
1// When working with strings, + stands for concatenation
2"2" + "3";
1[secondary_label Output]
2"23"
由于+
操作符是多用途的,所以2
和3
的字符串值,尽管是数字字符串,但与23
字符串值相连,而不是合并为数字5
。
由于模糊性可能存在,有时会导致意想不到的结果,因此通常最好尽可能明确地转换代码中的数据类型,这将有助于管理用户的输入和处理错误。
将值转换为字符串
值可以通过调用)`来明确转换为字符串。
使用 String()
函数,让我们将 Boolean 值转换为一个字符串,将值 true
传入 String()
参数。
1String(true);
当我们这样做时,字面字符串真
将返回。
1[secondary_label Output]
2"true"
或者,我们可以将一个数字传入函数。
1String(49);
将返回这个数字的字母字符串。
1[secondary_label Output]
2"49"
我们将为变量odyssey
分配一个数字值,然后使用typeof
运算器检查类型。
1let odyssey = 2001;
2console.log(typeof odyssey);
1[secondary_label Output]
2number
在此时,变量奥迪赛
被分配给2001
的数值,我们已经确认这是一个数字。
现在,让我们将‘odyssey’重新分配给其字符串等级,然后使用‘typeof’来确认我们已成功将变量值从一个数字转换为一个字符串。
1odyssey = String(odyssey); // "2001"
2console.log(typeof odyssey);
1[secondary_label Output]
2string
在上面的示例中,我们确认odyssey
被重新分配为数据类型转换后相当于字符串值。
我们可以用n.toString()
以类似的方式使用,我们可以用一个变量代替n
:
1let blows = 400;
2blows.toString();
变量冲击
将作为一个字符串返回。
1[secondary_label Output]
2"400"
或者,我们可以将一个值放入窗格中,而不是使用 n.toString()
的变量:
1(1776).toString(); // returns "1776"
2(false).toString(); // returns "false"
3(100 + 200).toString(); // returns "300"
通过使用 String()
或 n.toString()
,我们可以明确地将 Boolean 或 [数字数据类型] 的值(https://andsky.com/tech/tutorials/understanding-data-types-in-javascript# numbers) 转换为字符串值,以确保我们的代码按照我们的预期行为。
将值转换为数字
当将值转换为数字数据类型时,我们将使用 Number()
方法. 主要是将数字文本的字符串转换为数字,但我们还可以转换布尔值。
我们可以将一个数字的序列传递到Number()
方法:
1Number("1984");
字符串将转换为数字,不再被嵌入引用标记中。
1[secondary_label Output]
21984
我们还可以将一个字符串分配给一个变量,然后转换它。
1let dalmatians = "101";
2Number(dalmatians);
1[secondary_label Output]
2101
字母字符串101
通过其变量被转换为数字101
。
白色空白字符串或空白字符串将转换为0
。
1Number(" "); // returns 0
2Number(""); // returns 0
请注意,非数字的字符串将转换为NaN
,这代表了 N ot** a** ** N** umber。
1Number("twelve"); // returns NaN
2Number("20,000"); // returns NaN
3Number("2 3"); // returns NaN
4Number("11-11-11"); // returns NaN
对于布尔数据类型,假
将评估为0
和真
将评估为1
。
1Number(false); // returns 0
2Number(true); // returns 1
Number()
方法将非数字数据类型转换为数字。
将价值转换为布尔
要将数字或字符串转换为布尔值,使用Boolean()
方法,这可以帮助确定用户是否在文本字段中输入数据。
解釋為空的任何值,例如數字「0」、空串或未定義的值「NaN」或「null」將轉換為「虛假」。
1Boolean(0); // returns false
2Boolean(""); // returns false
3Boolean(undefined); // returns false
4Boolean(NaN); // returns false
5Boolean(null); // returns false
其他值将转换为真
,包括由白色空间组成的字符串字母。
1Boolean(2000); // returns true
2Boolean(" "); // returns true
3Boolean("Maniacs"); // returns true
请注意,0
作为字母字符串将转换为true
,因为它是一个非空字符串值:
1Boolean("0"); // returns true
将数字和字符串转换为布尔值可以使我们能够在二进制术语中评估数据,并可用于我们的程序中的控制流。
结论
本教程涵盖了JavaScript如何处理原始数据类型的转换,尽管由于类型强制性,数据类型在许多情况下会被暗示地转换,但为了确保程序按预期运作,明确转换数据类型是很好的习惯。
要了解更多关于JavaScript的数据类型,请阅读)。