数据类型代表了我们可以在 JavaScript 中使用的不同类型的值。
JavaScript 中总共有8种基本数据类型。
数据类型 | 描述 | 示例 |
---|---|---|
字符串 |
文本数据。 | 'hello' , "hello world!" 等。 |
Number |
整数或浮点数。 | 3 , 3.234 , 3e-2 等。 |
BigInt |
任意精度的整数。 | 900719925124740999n , 1n 等。 |
布尔型 |
两个值之一:true 或 false 。 |
true 和 false |
undefined |
一种数据类型,其变量未初始化。 | let a; |
null |
表示一个null 值。 |
let a = null; |
Symbol |
一种数据类型,其实例是唯一且不可变的。 | let value = Symbol('hello'); |
对象 |
键值对的数据集合。 | let student = {name: "John"}; |
注意: JavaScript 数据类型分为原始类型和非原始类型。
- 原始数据类型:它们可以包含单个简单值。
String
、Number
、BigInt
、Boolean
、undefined
、null
和Symbol
是原始数据类型。
- 非原始数据类型:它们可以包含多个值。
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 也可以表示特殊的数字值,如 Infinity
、-Infinity
和 NaN
(非数字)。例如,
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
在 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
数据只能有两个值之一:true
或 false
。例如,
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
在这里,我们使用了 ===
来比较 value1 和 value2。如果两个值完全相同,则返回 true
。否则,返回 false
。
尽管 value1 和 value2 都包含 "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 根据分配给变量的值来确定其类型。
因此,更改变量的值也会更改其类型,前提是新值是不同类型的值。例如,
// 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