JavaScript基础教程

JavaScript 对象

JavaScript 函数

JS HTML DOM

JS 浏览器BOM

AJAX 基础教程

JavaScript 参考手册

JavaScript 类型转换

类型转换是一种将一种数据类型转换为另一种数据类型的方法。

在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的值为0true的值为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("");
测试看看‹/›