了解JavaScript中的数据类型

来自菜鸟教程
跳转至:导航、​搜索

介绍

数据类型用于在编程语言中对一种特定类型的数据进行分类。 例如,数字和字符串是不同类型的数据,JavaScript 会以不同的方式处理它们。

这很重要,因为您使用的特定数据类型将决定您可以为其分配什么值以及您可以对其执行什么操作。 也就是说,为了能够在 JavaScript 中对变量进行操作,了解任何给定变量的数据类型很重要。

在本教程中,我们将讨论数据类型在 JavaScript 中的工作方式以及该语言原生的重要数据类型。 这不是对数据类型的详尽调查,但会帮助您熟悉 JavaScript 中可用的选项。

动态打字

JavaScript 具有动态数据类型,这意味着类型检查是在运行时而不是编译时完成的。 Python 的 数据类型 也是动态类型的。

使用动态类型语言,可以使用同名变量来保存不同的数据类型。

例如,变量 t,通过 let 关键字定义为变量(注意 let 保持给定变量的范围有限),可以分配以保存不同的数据类型,或者可以初始化但未定义:

let t = 16;          // t is a number
let t = "Teresa";   // t is a string
let t = true;      // t is a Boolean
let t;                // t is undefined

上面的每个变量 t 都可以设置为 JavaScript 中可用的任何数据类型; 在使用它们之前,它们不需要用数据类型显式声明。

数字

JavaScript 只有一种数字类型,整数和浮点数没有单独的名称。 正因为如此,数字可以用 JavaScript 编写,带或不带小数:

let num1 = 93;
let num2 = 93.00;

在上述两种情况下,数据类型都是数字,无论数字是否有小数点,数据类型都是相同的。

JavaScript 中可以使用科学指数表示法来缩写非常大或非常小的数字,如下例所示:

let num3 = 987e8;        // 98700000000
let num4 = 987e-8;      // 0.00000987

JavaScript 中的数字被认为精确到 15 位。 这意味着数字将在达到第 16 位后四舍五入:

let num5 = 999999999999999;      // remains as 999999999999999
let num6 = 9999999999999999;    // rounded up to 10000000000000000

除了表示数字之外,JavaScript 数字类型还具有三个可用的符号值:

  • Infinity — 表示接近无穷大的 数的数值
  • -Infinity — 表示接近无穷大的 数的数值
  • NaN — 表示非数字的数值,代表 not a nnumber

如果您计算的数字超出了 JavaScript 中可用的最大可能数字,则将返回 Infinity-Infinity。 这些也将发生在未定义的值上,例如除以零时:

let num7 = 5 / 0;  // will return Infinity
let num8 = -5 / 0;    // will return -Infinity

从技术上讲,当一个数字超过数字 1.797693134862315E+308 时,会显示 Infinity,它代表 JavaScript 中的上限。

同样,当数值超过-1.797693134862316E+308的下限时,会显示-Infinity

数字 Infinity 也可用于循环:

while (num9 != Infinity) { 
    // Code here will execute through num9 = Infinity
}

对于不合法的数字,将显示NaN。 如果您尝试对数字和非数字值执行数学运算,将返回 NaN。 以下示例中就是这种情况:

let x = 20 / "Shark";  // x will be NaN

由于数字 20 不能除以字符串 "Shark",因为它不能作为数字进行计算,因此 x 变量的返回值为 NaN

但是,如果可以将字符串作为数值计算,则可以在 JavaScript 中执行数学表达式:

let y = 20 / "5";  // y will be 4

在上面的示例中,由于字符串 "5" 可以在 JavaScript 中被计算为数值,因此它被视为数字值,并且将与除法的数学运算符 / 一起使用。

将值 NaN 分配给操作中使用的变量时,即使另一个操作数是合法数字,也会产生 NaN 的值:

let a = NaN;
let b = 37;
let c = a + b;    // c will be NaN

JavaScript 中只有一种数字数据类型。 处理数字时,您输入的任何数字都将被解释为数字的数据类型; 由于 JavaScript 是动态类型的,因此您无需声明要输入的数据类型。

字符串

string 是一个或多个字符(字母、数字、符号)的序列。 字符串很有用,因为它们表示文本数据。

在 JavaScript 中,字符串存在于单引号 ' 或双引号 " 中,因此要创建字符串,请将一系列字符括在引号中:

let singleQuotes = 'This is a string in single quotes.';
let doubleQuotes = "This is a string in double quotes.";

您可以选择使用单引号或双引号,但无论您决定使用哪一种,都应该在程序中保持一致。

节目“你好,世界!” 演示如何在计算机编程中使用字符串,因为在下面的 alert() 中构成短语 Hello, World! 的字符是字符串。

你好.html

<!DOCTYPE HTML>
<html>
<head>
<script>
function helloFunction() {
    alert("Hello, World!");
}
</script>
</head>
<body>
<p><button onclick="helloFunction()">Click me</button></p>
</body>
</html>

当我们运行代码并单击 Click me 按钮时,我们将收到一个带有以下输出的弹出窗口:

OutputHello, World!

与其他数据类型一样,我们可以将字符串存储在变量中:

let hw = "Hello, World!";

并通过调用变量显示 alert() 中的字符串:

你好.html

...
<script>
let hw = "Hello, World!";
function helloFunction() {
    alert(hw);
}
</script>
...
OutputHello, World!

我们可以在程序中对字符串执行许多操作,以操纵它们以实现我们正在寻求的结果。 字符串对于向用户传达信息以及用户将信息传达回程序很重要。

布尔值

Boolean 数据类型可以是 truefalse 这两个值之一。 布尔值用于表示与数学逻辑分支相关的真值,它为计算机科学中的算法提供信息。

数学中的许多运算为我们提供了评估结果为真或假的答案:

  • 比...更棒
    • 500 > 100 true
    • 1 > 5 false
  • 少于
    • 200 < 400true
    • 4 < 2false
  • 平等的
    • 5 = 5 true
    • 500 = 400 false

与其他数据类型一样,我们可以将布尔值存储在变量中:

let myBool = 5 > 8; // false

由于 5 不大于 8,因此变量 myBool 的值为 false

随着您使用 JavaScript 编写更多程序,您将更加熟悉布尔值的工作方式以及不同的函数和运算如何评估为真或假可以改变程序的进程。

数组

array 可以在单个变量中保存多个值。 这意味着您可以在数组中包含值列表并遍历它们。

数组中的每个项目或值称为 元素 。 您可以使用索引号来引用数组的元素。

正如字符串被定义为引号之间的字符一样,数组是通过在方括号 [ ] 之间包含值来定义的。

例如,一个字符串数组如下所示:

let fish = ["shark", "cuttlefish", "clownfish", "eel"];

如果我们调用变量 fish,我们将收到以下输出:

["shark", "cuttlefish", "clownfish", "eel"]

数组是一种非常灵活的数据类型,因为它们是可变的,因为它们可以添加、删除和更改元素值。

对象

JavaScript object 数据类型可以包含许多值作为 name:value 对。 这些对提供了一种有用的方式来存储和访问数据。 对象字面量语法由名称:值对组成,由冒号分隔,两侧有大括号 { }

通常用于保存相关数据,例如 ID 中包含的信息,JavaScript 对象文字看起来像这样,属性之间有空格:

let sammy = {firstName:"Sammy", lastName:"Shark", color:"blue", location:"ocean"};

或者,特别是对于具有大量名称:值对的对象文字,我们可以将此数据类型写在多行上,每个冒号后面都有一个空格:

let sammy = {
    firstName: "Sammy",
    lastName: "Shark",
    color: "blue",
    location: "Ocean"
};

上述每个示例中的对象变量 sammy 具有 4 个属性:firstNamelastNamecolorlocation。 这些都是用冒号分隔的每个传递的值。

使用多种数据类型

虽然您创建的每个程序都将包含多种数据类型,但请务必记住,您通常会在同一数据类型中执行操作。 也就是说,您将在数字上执行数学运算,或对字符串进行切片。

当您使用跨数据类型的运算符时,例如可以添加数字或连接字符串的 + 运算符,您可能会获得意想不到的结果。

例如,当将 + 运算符与数字和字符串一起使用时,数字将被视为字符串(因此它们将被连接),但数据类型的顺序会影响连接。

因此,如果您创建一个执行以下连接的变量,JavaScript 会将下面的每个元素解释为一个字符串:

let o = "Ocean" + 5 + 3;

如果您调用 o 变量,您将得到以下返回值:

OutputOcean53

但是,如果以数字开头,则当程序运行时到达 "Ocean" 时,这两个数字将在被解释为字符串之前相加,因此返回的值将是与字符串连接的两个数字的总和:

let p = 5 + 3 + "Ocean";
Output8Ocean

由于这些意外结果,您可能会在一种数据类型内而不是跨它们执行操作和方法。 然而,JavaScript 不会像其他一些编程语言那样在混合数据类型时返回错误。

结论

至此,您应该对 JavaScript 中可用的一些主要数据类型有了更好的了解。

当您使用 JavaScript 语言开发编程项目时,这些数据类型中的每一种都将变得很重要。