最新JavaScript数据类型详解

452 阅读4分钟

JavaScript数据类型

这篇文章详细列出了 JavaScript 中可用的各种数据类型。 JavaScript中有八种数据类型,如下表:

数据类型描述实例
String字符串数据'hello', "hello world!"
Number整数或浮点数3, 3.234, 3e-2
BigInt具有任意精度的整数900719925124740999n , 1n
Boolean两个值中的任何一个:真或假,即布尔值truefalse
undefined变量未初始化的数据类型let a;
null表示一个空值let a = null;
Symbol实例唯一且不可变的数据类型let value = Symbol('hello');
Object数据集合的键值对,即对象let student = { };

这里,除了 Object 之外的所有数据类型都是原始数据类型,而 Object 是非原始数据类型。

JavaScript String

String用于存储文本。在 JavaScript 中,字符串用引号括起来:

  • 单引号: 'Hello'
  • 双引号: "Hello"
  • 反引号: `Hello` 单引号和双引号实际上是相同的,可以使用它们中的任何一个。 当需要将变量或表达式包含到字符串中时,通常使用反引号。这是通过使用 ${variable or expression} 包装变量或表达式来完成的,如上所示。

JavaScript Number

Number 表示整数和浮点数(小数和指数)。例如,

const number1 = 3;
const number2 = 3.433;
const number3 = 3e5 // 3 * 10^5

数字类型也可以是 +Infinity、-Infinity 和 NaN(不是数字)。例如,

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

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

// 字符串不能被除
const number3 = "abc"/3; 
console.log(number3);  // NaN

JavaScript BigInt

在 JavaScript 中,Number 类型只能表示小于 (253 - 1) 和大于 -(253 - 1) 的数字。但是,如果您需要使用更大的数字,则可以使用 BigInt 数据类型。 通过将 n 附加到整数的末尾来创建 BigInt 数。例如,

// BigInt 值
const value1 = 900719925124740998n;

// 两个BigInt相加
const result1 = value1 + 1n;
console.log(result1); // "900719925124740999n"

const value2 = 900719925124740998n;

// 错误! BigInt 和数字不能相加
const result2 = value2 + 1; 
console.log(result2); 

注意:BigInt 是在较新版本的 JavaScript 中引入的,包括 Safari 在内的许多浏览器都不支持。

JavaScript Boolean

此数据类型表示逻辑实体。布尔值表示两个值之一:truefalse。更容易将其视为是/否开关。例如,

const dataChecked = true;
const valueCounted = false;

JavaScript undefined

undefined 的数据类型表示未分配的值。如果声明了变量但未分配值,则该变量的值将未定义。例如,

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

也可以显式地分配一个未定义的变量值。例如,

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

注意:建议不要将 undefined 显式分配给变量。通常,null 用于将“未知”或“空”值分配给变量。

JavaScript null

在 JavaScript 中,null 是一个特殊的值,表示空值或未知值。例如,

const number = null;

上面的代码表明 number 变量为空

注意:null 与 NULL 或 Null 不同

JavaScript Symbol

这种数据类型是在较新版本的 JavaScript(来自 ES2015)中引入的。 具有数据类型 Symbol 的值可以称为符号值。 Symbol 是一个不可变的原始值,它是唯一的。例如,

// 具有相同描述的两个符号

const value1 = Symbol('hello');
const value2 = Symbol('hello');

虽然 value1 和 value2 都包含 'hello',但它们是不同的 Symbol 。

JavaScript Object

对象是一种复杂的数据类型,它允许我们存储数据集合。例如,

const student = {
    firstName: 'ram',
    lastName: null,
    class: 10
};

JavaScript Type

JavaScript 是一种动态类型(松散类型)的语言。 JavaScript 会自动确定变量的数据类型。 这也意味着变量可以是一种数据类型,然后可以更改为另一种数据类型。例如,

//undefined
let data;

//integer
data = 5;

//string
data = "JavaScript Programming";

JavaScript typeof

要查找变量的类型,可以使用 typeof 运算符。例如,

const name = 'ram';
typeof(name); // 返回 "string"

const number = 4;
typeof(number); //返回 "number"

const valueChecked = true;
typeof(valueChecked); //返回 "boolean"

const a = null;
typeof(a); // 返回 "object"

记住 typeof 操作符的唯一目的就是检查数据类型,如果我们希望检查任何从 Object 派生出来的结构类型,使用 typeof 是不起作用的,因为总是会得到 "object"。检查 Object 种类的合适方式是使用 instanceof 关键字。但即使这样也存在误差。 除 Object 以外的所有类型都是不可变的(值本身无法被改变)。例如,与 C 语言不同,JavaScript 中字符串是不可变的(译注:如,JavaScript 中对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变)。我们称这些类型的值为“原始值”。