类型转换是一种将一种数据类型转换为另一种数据类型的方法。
在JavaScript中,数据类型用于对一种特定的数据类型进行分类,确定可以分配给该类型的值以及可以对其执行的操作。
JavaScript数据类型
在JavaScript中,有5种不同的数据类型可以包含值:
-
string
-
number
-
boolean
-
object
-
function
有3种类型的对象:
-
Object
-
Date
-
Array
还有2种不能包含值的数据类型:
-
null
-
undefined
运算符的类型
typeof运算符可以帮助你找到你的变量的类型。
typeof运算符返回一个变量或表达式的类型。
typeof "" // 返回 "string"
typeof "Vishal"// 返回 "string"
typeof "42"// 返回 "string" (引号内的数字为字符串)
typeof 42 // 返回 "number"
typeof true// 返回 "boolean"
typeof false // 返回 "boolean"
typeof undefined // 返回 "undefined"
typeof null// 返回 "object"
typeof {name:"Vishal", age:22} // 返回 "object"
typeof [2, 4, 6, 8]// 返回 "object" (不是“数组”)
typeof function myFunc(){} // 返回 "function"
您可以使用typeof运算符查找JavaScript变量的数据类型。
隐式转换
作为一种编程语言,JavaScript非常能容忍意外值。因此,JavaScript 将尝试转换意外值,而不是直接拒绝它们。这种隐式转换称为类型强制。
例如,在数学运算中,值会自动转换为数字。
但是,结果并不总是您所期望的:
"3" + 2// 返回 "32" (因为2被转换成“2” )
"3" - 2// 返回 1 (因为“3”被转换为3)
"3" * "2" // 返回 6 (因为 "3" 和 "2" 被转换为 3 和 2)
2 + true // 返回 3 (因为 true 被转换为 1)
2 + false // 返回 2 (因为 false 被转换为 0)
2 + null // 返回 2 (因为 null 被转换为 0)
"2" + null // 返回 "2null" (因为 null 被转换为 "null")
在某些情况下,我们需要将值从一种数据类型显式转换为另一种数据类型。
JavaScript提供了许多不同的方法来执行此类数据类型转换任务。
在以下各节中,我们将详细讨论这些方法。
将值转换为字符串
可以通过调用String()函数或x.toString()方法将值显式转换为字符串。
通过该String()函数,我们将值true传递给参数,从而将布尔值转换为字符串:
String(true);// 返回 "true"
另外,我们可以将数字传递给函数:
String(108);// 返回 "108"
我们可以使用typeof运算符检查类型:
typeof String(true);// 返回 "string"
typeof String(108); // 返回 "string"
我们可以以类似的方式使用x.toString()方法。我们可以将x替换为变量:
let temp = 108;
temp.toString();
或者,我们可以将值放在括号内,而不是使用x.toString()进行变量设置:
(9048).toString();// 返回 "9048"
(false).toString(); // 返回 "false"
(50 + 20).toString(); // 返回 "70"
通过使用String()或x.toString()我们可以将Boolean或number数据类型的值显式转换为字符串值,以确保我们的代码按预期运行。
将值转换为数字
将值转换为数字数据类型时,我们将使用Number()函数。
首先,我们将把数字文本字符串转换为数字,但也可以转换布尔值。
我们可以将一个数字字符串传递给Number()函数:
Number("1992");// 返回 1992
我们还可以将字符串分配给变量,然后将其转换:
let debt = "3500";
Number(debt); // 返回 3500
空格字符串或空字符串将转换为0(零):
Number(" ");// 返回 0
Number(""); // 返回 0
注意,非数字字符串将转换为NaN, NaN表示非数字。这包括以空格分隔的数字:
Number("seventy"); // 返回 NaN
Number("Hello world"); // 返回 NaN
Number("12,000");// 返回 NaN
Number("5 7"); // 返回 NaN
Number("26-11-2008");// 返回 NaN
对于布尔数据类型,false的值为0,true的值为1:
Number(false); // 返回 0
Number(true); // 返回 1
如果参数是Date对象,则Number()函数返回自UTC 1970年1月1日午夜以来的毫秒数:
Number(new Date());
该Number()函数将非数字数据类型转换为数字。
将值转换为布尔值
要将数字或字符串转换为布尔值,请使用该Boolean()函数。
任何被解释为空的值(例如数字0,空字符串或未定义或NaN或null的值)都将转换为false:
Boolean(0); // 返回 false
Boolean("");// 返回 false
Boolean(undefined); // 返回 false
Boolean(NaN); // 返回 false
Boolean(null); // 返回 false
其他值将转换为true,包括由空格组成的字符串文字:
Boolean(50); // 返回 true
Boolean(-50);// 返回 true
Boolean(3.14); // 返回 true
Boolean("false");// 返回 true
Boolean("Hello World"); // 返回 true
注意,“ 0”作为字符串文字将转换为true,因为它是一个非空的字符串值:
Boolean("0"); // 返回 true
将数字和字符串转换为布尔值可以使我们能够评估二进制术语内的数据,并且可以利用它来指定程序中的指定流。
将数组转换为字符串
toString()方法将数组转换为(逗号分隔)数组值的字符串。
var months = ["Jan", "Feb", "Mar", "Apr", "May"];
document.getElementById("result").innerHTML = months.toString();
join()方法还将数组的所有元素转换为新的字符串。
此方法的行为类似于toString(),但是您还可以指定分隔符。
var fruits = ["Banana", "Apple", "Mango"];
fruits.join(" + "); // Banana + Apple + Mango
fruits.join(" / "); // Banana / Apple / Mango
fruits.join(" © "); // Banana © Apple © Mango
当期望原始值时,JavaScript自动将数组转换为逗号分隔的字符串。
当您尝试输出数组时,总是如此。
let fruits = ["Apple", "Mango", "Banana", "Orange"];
document.getElementById("result").innerHTML = fruits;
将字符串转换为数组
split()方法将字符串拆分为子字符串数组,然后返回新数组。
我们将使用split()方法通过以表示的空格字符分隔数组" "。
var str = 'Air Pollution is introduction of chemicals to the atmosphere.';
var arr = str.split(" ");
现在我们在arr变量中有了一个新数组,我们可以使用索引号访问每个元素:
arr[0]; // Air
arr[2]; // is
在以下示例中,我们将使用“ i”作为分隔符:
var str = 'Air Pollution is introduction of chemicals to the atmosphere.';
var arr = str.split("i");
如果将空字符串("")用作分隔符,则该字符串将转换为字符数组:
var str = 'Air Pollution is introduction of chemicals to the atmosphere.';
var arr = str.split("");