JavaScript 数据类型

数据类型代表了我们可以在 JavaScript 中使用的不同类型的值。

JavaScript 中总共有8种基本数据类型。

数据类型 描述 示例
字符串 文本数据。 'hello', "hello world!" 等。
Number 整数或浮点数。 3, 3.234, 3e-2 等。
BigInt 任意精度的整数。 900719925124740999n, 1n 等。
布尔型 两个值之一:truefalse truefalse
undefined 一种数据类型,其变量未初始化。 let a;
null 表示一个null值。 let a = null;
Symbol 一种数据类型,其实例是唯一且不可变的。 let value = Symbol('hello');
对象 键值对的数据集合。 let student = {name: "John"};

注意: JavaScript 数据类型分为原始类型和非原始类型。

  • 原始数据类型:它们可以包含单个简单值。StringNumberBigIntBooleanundefinednullSymbol 是原始数据类型。
  • 非原始数据类型:它们可以包含多个值。Objects 是非原始数据类型。

JavaScript 字符串

字符串表示文本数据。它包含一系列字符。例如,"hello", "JavaScript" 等。

在 JavaScript 中,字符串是用引号括起来的

  • 单引号: 'Hello'
  • 双引号: "Hello"
  • 反引号: `Hello`

例如,

// string enclosed within single quotes
let fruit = 'apple';
console.log(fruit)

// string enclosed within double quotes
let country = "USA";
console.log(country);

// string enclosed within backticks
let result = `fail`;
console.log(result);

输出

apple
USA
fail

在字符串中,我们可以使用单引号或双引号。但是,建议使用双引号。

注意: 在字符串中混用引号是非法的。例如,字符串 'hello""world' 分别用一个单引号和一个双引号括起来,这会导致错误。

要了解更多关于字符串的信息,请访问 JavaScript String


JavaScript Number

在 JavaScript 中,number 类型表示数字值(包括整数和浮点数)。

  • 整数 - 没有小数部分的数值。示例:3, -74 等。
  • 浮点数 - 带小数部分的数值。示例:3.15, -1.3 等。
// integer value
let integer_number = -3;
console.log(integer_number);

// floating-point value
let float_number = 3.15;
console.log(float_number);

输出

-3
3.15

要了解更多关于数字的信息,请访问 JavaScript Number

特殊数字值

JavaScript 也可以表示特殊的数字值。

JavaScript 也可以表示特殊的数字值,如 Infinity-InfinityNaN(非数字)。例如,

let number1 = 3 / 0;
console.log(number1);  // Infinity

let number2 = -3 / 0;
console.log(number2);  // -Infinity

// strings can't be divided by numbers
let number3 = "abc" / 3; 
console.log(number3);  // NaN

JavaScript BigInt

BigInt 是一种数字类型,它可以表示超出常规 number 数据类型范围的非常大或非常小的整数。

注意:常规数字数据类型可以处理小于 (2^53 - 1) 和大于 -(2^53 - 1) 的值。

通过在整数后附加 n 来创建一个 BigInt 数字。例如,

// BigInt value
let value1 = 900719925124740998n;

// add two big integers
let result1 = value1 + 1n;
console.log(result1);  // "900719925124740999n"

let value2 = 900719925124740998n;

输出

900719925124740999n
TypeError: Cannot mix BigInt and other types, use explicit conversions

注意: BigInt 是在较新版本的 JavaScript(ES11)中引入的,并且不被包括 Safari 在内的许多浏览器支持。要了解更多,请访问 JavaScript BigInt 支持

您不能混合 BigInt 和 number

您不能混合 BigInt 和 number 值。

在 JavaScript 中,您不能混合 BigInt 和 number 值(例如,通过它们之间执行算术运算)。

// BigInt value
let value = 900719925124740998n;;

// Error! BitInt and number cannot be added
let sum = value + 1; 
console.log(sum);

输出

TypeError: Cannot mix BigInt and other types, use explicit conversions

JavaScript Boolean

Boolean 数据只能有两个值之一:truefalse。例如,

let dataChecked = true;
console.log(dataChecked);  // true

let valueCounted = false;
console.log(valueCounted);  // false

如果您想了解更多关于布尔值的信息,请访问 JavaScript Booleans


JavaScript undefined

在 JavaScript 中,undefined 表示值的缺失。

如果声明了一个变量但未为其赋值,则该变量的值将是 undefined。例如,

let name;
console.log(name);  // undefined

也可以显式地将 undefined 赋值给变量。例如,

let name = undefined;
console.log(name);  // undefined

注意:您应该避免显式地将 undefined 赋值给变量。通常,我们将 null 赋值给变量以表示“未知”或“空”值。


JavaScript null

在 JavaScript 中,null 表示“无值”“空”。例如,

let number = null;
console.log(number);  // null

在这里,let number = null; 表示 number 变量被设置为没有任何值。

访问 JavaScript null and undefined 以了解更多。


JavaScript Symbol

Symbol 是一个唯一且原始的值。此数据类型是在 ES6 中引入的。

当您创建一个 Symbol 时,JavaScript 保证它与其他所有符号都不同,即使它们具有相同的描述。例如,

// two symbols with the same description
let value1 = Symbol("programiz");
let value2 = Symbol("programiz");

console.log(value1 === value2);  // false

在这里,我们使用了 === 来比较 value1value2。如果两个值完全相同,则返回 true。否则,返回 false

尽管 value1value2 都包含 "programiz",但 JavaScript 将它们视为不同的,因为它们是 Symbol 类型。因此,value1 === value2 返回 false

要了解更多,请访问 JavaScript Symbol


JavaScript Object

Object 以键值对的形式保存数据。例如,

let student = {
    firstName: "John",
    lastName: null,
    class: 10
};

在这里,我们创建了一个名为 student 的对象,其中包含键值对

Key
firstName "John"
lastName null
class 10

要了解更多,请访问 JavaScript Objects


JavaScript 数据类型详解

如何检查变量的数据类型?

您可以使用 typeof 运算符来查找变量的数据类型。例如,

let name = "ram";
console.log(typeof(name));  // string

let number = 4;
console.log(typeof(number));  // number

let valueChecked = true;
console.log(typeof(valueChecked));  // boolean

let a = null;
console.log(typeof(a));  // object

注意:请注意,对于 null 类型,typeof 返回的是 object。这是 JavaScript 自首次发布以来一直存在的已知问题。

JavaScript 自动确定变量的数据类型。

JavaScript 根据分配给变量的值来确定其类型。

因此,更改变量的值也会更改其类型,前提是新值是不同类型的值。例如,

// data is of undefined type
let data;
console.log(typeof(data));  // undefined

// data is of number type
data = 5;
console.log(typeof(data));  // number

// data is of string type
data = "JavaScript Programming";
console.log(typeof(data));  // string

在我们结束之前,让我们来检验一下您对 JavaScript 数据类型的掌握程度!您能解决下面的挑战吗?

挑战

编写一个函数来连接两个字符串。

  • 给定两个输入字符串(str1str2),返回连接后的字符串。
  • 例如,如果 str1 = "Hello, "str2 = "World!",则预期的输出是 "Hello, World!"

视频:JavaScript 数据类型

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战