在JavaScript中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给类型的值以及可以对其执行的操作。虽然由于类型强制,JavaScript会自动转换许多值,但为了达到预期的结果,通常最好在类型之间手动转换值。那么如何在JavaScript中转换数据类型?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。
JavaScript 变量可以转换为新变量或其他数据类型,分为两种情况:
● 隐性转换:通过 JavaScript 自身自动转换
● 显性转换:通过使用 JavaScript 函数进行转换
隐性转换
作为一种编程语言,javascript对意外值非常宽容。因此,JavaScript将尝试转换意外的值,而不是直接拒绝它们。这种隐性转换称为强制类型转换。
有些方法会自动转换值以便使用它们,例:alert()方法将字符串作为参数,但它将自动将其他类型转换为字符串。因此,我们可以向方法传递一个数值:
alert(8.5);
如果我们运行上面的代码,浏览器将弹出一个警报对话框,显示8.5的值,它已经被转换为一个字符串。
当使用可以通过数学运算符计算为数字的字符串时,您将发现JavaScript能够通过隐式地将字符串转换为数字来处理这些值,如下面的示例所示。
例1:
"15" - "10";
输出:
5
例2:
"15" / "10";
输出
1.5
例3:
"15" % "10";
输出:
5
但是,并非每个运算符都能按预期工作。该+运算符尤其是有问题的,因为它即可以表示加法,也可以表示字符串连接。
当使用字符串时,+运算符表示字符串连接:
"2" + "3";
输出:
"23"
由于+运算符是多用途的,字符串值2和3,尽管是数字串,被连接到的字符串值23,而不是加在一起成为数5。
因为可能存在歧义,有时会导致意外的结果,所以最好在代码中尽可能地显性转换数据类型。这将有助于管理来自用户的输入和处理错误。
显性转换
1、将值转换为字符串
可以通过调用String()
或n.toString()
显式地将值转换为字符串。
使用String()函数,让我们通过将布尔值true传递给String()的参数,将其转换为字符串。
String(true);
输出:
"true"
或者,我们可以将一个数字传递给函数。
String(50);
输出:
"50"
我们来具体看看,先分配一个数值给变量a,然后使用typeof运算符来检查类型。
var a=50
console.log("值:"+a+",类型为"+typeof a);
输出:
值:50,类型为number
可以看出此时变量a被赋予数值50,是一个数组。
现在,我们来使用String()函数,将值转换为字符串,然后使用typeof
运算符来检查类型。
a=String(a);
console.log("值:"+a+",类型为"+typeof a);
输出:
值:50,类型为string
在上面的示例中,我们已经确认在数据类型转换之后,变量a被重新分配为等效的字符串值。
我们也可以用类似的方式使用n.toString()。我们可以用一个变量替换n:
let blows = 400;
blows.toString();
变量blows将作为字符串返回。
"400"
或者,我们可以在括号中放置一个值,而不是使用n.ToString()的变量:
(1776).toString(); //返回 "1776"
(false).toString(); // 返回 "false"
(100 + 200).toString(); // 返回 "300"
通过使用String()
或n.toString()
我们能够将布尔值或数字数据类型的值显式转换为字符串值,以确保我们的代码行为与我们预期的一样。
2、将值转换为数字
我们可以使用number()
方法,将值转换为数字数据类型。首先,我们将把数字文本字符串转换为数字,也可以将布尔值转换对于的数字0或1。
我们可以将一个数字串传递给number()方法:
Number("50");
该字符串将转换为数字,不再包含在引号内。
50
白色空格或空字符串将转换为0。
Number(" "); // 返回 0
Number(""); // 返回 0
注意,非数字字符串将转换为NaN, NaN表示非数字。这包括用空格分隔的数字。
Number("twelve"); // 返回 NaN
Number("20,000"); // 返回NaN
Number("2 3"); // 返回 NaN
Number("11-11-11"); // 返回 NaN
对于布尔数据类型,false的值为0,true的值为1。
Number(false); // 返回 0
Number(true); // 返回 1
Number()
方法会将非数字数据类型转换为数字。
3、将值转换为布尔值
我们可以使用Boolean()
方法,将数字或字符串值转换为布尔值。这是一种非常有用的方法,例如:可以用于确定用户是否将数据输入文本字段。
任何被解释为空的值,如数字0、空字符串或未定义的值、NaN或null,都被转换为false。
Boolean(0); // 返回 false
Boolean(""); // 返回 false
Boolean(undefined); // 返回 false
Boolean(NaN); // 返回 false
Boolean(null); // 返回 false
其他值将被转换为true,包括由空格组成的字符串文字。
Boolean(2000); // 返回 true
Boolean(" "); // 返回 true
Boolean("Maniacs"); // 返回 true
注意:“0”作为字符串文字将转换为 true,因为它是一个非空字符串值:
Boolean("0"); // 返回 true
将数字和字符串转换为布尔值可以让我们在二进制项中评估数据,并且可以在程序中用于控制流。
总结:
虽然由于类型强制,数据类型将在许多情况下隐式转换,但显式转换数据类型以确保程序按预期运行是一个好习惯。