JavaScript 中数据类型的理解

介绍

数据类型用于在编程语言中对一种特定类型的数据进行分类。例如,数字和一串字符是 JavaScript 中将被不同对待的不同数据类型。

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

在本教程中,我们将介绍 JavaScript 中数据类型的工作原理,以及该语言中的重要数据类型。这不是对数据类型的详尽调查,但将帮助您熟悉 JavaScript 中的选项。

动态类型

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

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

例如,变量t,由let关键字定义为变量(注意let将给定变量限制在范围内),可以被赋值为不同的数据类型,或者可以被初始化但保持未定义:

let t = 16;			// t是一个数字
let t = "Teresa";	// t是一个字符串
let t = true;		// t是一个布尔值
let t;				// t是未定义的

上述每个变量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;		// 保持为999999999999999
let num6 = 9999999999999999;	// 四舍五入为10000000000000000

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

  • Infinity — 代表一个逼近无穷大的数的数值
  • -Infinity — 代表一个逼近负无穷大的数的数值
  • NaN — 代表一个非数字的数值,表示

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

let num7 = 5 / 0;	// 将返回Infinity
let num8 = -5 / 0;	// 将返回-Infinity

在技术上,当一个数字超过JavaScript中的上限 1.797693134862315E+308时,将显示Infinity

类似地,当一个数字超出-1.797693134862316E+308的下限时,将显示-Infinity

数字Infinity也可以在循环中使用:

while (num9 != Infinity) { 
	// 在此处的代码将执行直到 num9 = Infinity
}

对于不是合法数字的数字,将显示NaN。如果尝试对数字和非数值进行数学运算,则会返回NaN。这在以下示例中是成立的:

let x = 20 / "Shark";	// x 将为 NaN

由于数字20不能被字符串"Shark"除,因为它不能被评估为一个数字,所以x变量的返回值为NaN

然而,如果一个字符串可以被评估为数值,JavaScript 中就可以执行数学表达式:

let y = 20 / "5";	// y 将为 4

在上面的例子中,由于字符串"5"可以在 JavaScript 中被评估为数值,它被视为数值并将与除法的数学运算符/一起工作。

当将NaN赋值给操作中使用的变量时,将导致NaN的值,即使另一个操作数是合法数字:

let a = NaN;
let b = 37;
let c = a + b; 	// c 将为 NaN

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

字符串

A string is a sequence of one or more characters (letters, numbers, symbols). Strings are useful in that they represent textual data.

在JavaScript中,字符串可以用单引号'或双引号"括起来表示,所以要创建一个字符串,需要用引号括起一系列字符:

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

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

程序“Hello, World!”演示了如何在计算机编程中使用字符串,因为在下面的alert()中构成短语Hello, World!的字符是一个字符串。

hello.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按钮时,我们将收到一个带有以下输出的弹出窗口:

Output
Hello, World!

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

let hw = "Hello, World!";

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

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

我们可以在程序中执行许多操作来操作字符串,以达到我们所需的结果。字符串对于向用户传达信息以及用户向程序传达信息都很重要。

布尔值

布尔数据类型可以是两个值之一,要么,要么。布尔用于表示与数学逻辑分支相关联的真值,这影响到计算机科学中的算法。

数学中的许多操作给出的答案要么评估为真,要么评估为假:

  • 大于
    • 500 > 100
    • 1 > 5
  • 小于
    • 200 < 400
    • 4 < 2
  • 等于
    • 5 = 5
    • 500 = 400

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

let myBool = 5 > 8;	// 假

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

随着您在JavaScript中编写更多的程序,您将更加熟悉布尔的工作原理,以及不同的函数和操作评估为真或假如何改变程序的运行方式。

数组

一个数组可以在单个变量中保存多个值。这意味着你可以在数组中包含一系列值,并对它们进行迭代。

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

就像字符串是用引号之间的字符定义一样,数组是通过将值放在方括号[ ]之间来定义的。

例如,字符串数组看起来像这样:

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

如果我们称变量为fish,我们将得到以下输出:

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

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

对象

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

通常用于保存相关的数据,例如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变量,则会返回以下值:

Output
Ocean53

然而,如果以数字开头,那么在程序运行到 "Ocean" 时,这两个数字将被相加,然后被解释为一个字符串,因此返回的值将是两个数字的和与字符串连接起来:

let p = 5 + 3 + "Ocean";
Output
8Ocean

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

结论

到目前为止,你应该对 JavaScript 中可用的一些主要数据类型有了更好的理解。

在 JavaScript 语言中开发编程项目时,每种数据类型都会变得重要。

Source:
https://www.digitalocean.com/community/tutorials/understanding-data-types-in-javascript