原始数据类型
JavaScript 原始数据类型是不可变且值存储在实际变量中的值类型。它们包括:
- Number: 整数和浮点数(例如,10、3.14)
- String: 字符串值(例如,"Hello World")
- Boolean: 布尔值(例如,true、false)
- BigInt: 超出普通数字范围的整数(例如,10n)
- Symbol: 唯一且不可变的值(例如,Symbol("uniqueSymbol"))
- Null: 不存在或未知的值
- Undefined: 未分配值的变量
演示代码:
console.log(typeof 10); // Number
console.log(typeof "Hello World"); // String
console.log(typeof true); // Boolean
console.log(typeof 10n); // BigInt
console.log(typeof Symbol("uniqueSymbol")); // Symbol
console.log(typeof null); // Object(JavaScript 的一个异常情况)
console.log(typeof undefined); // undefined
引用数据类型
JavaScript 引用数据类型是可变的,其值存储在堆内存中,并通过引用访问。它们包括:
- Object: 包含键值对的无序集合(例如,{name: "John", age: 30})
- Array: 具有数字索引的有序值的列表(例如,[1, 2, 3, 4, 5])
- Function: 一组可执行代码(例如,function sayHello() { console.log("Hello!"); })
演示代码:
console.log(typeof {}); // Object
console.log(typeof []); // Object
console.log(typeof function() {}); // Function
严格模式下的数据类型
在 JavaScript 严格模式中,对数据类型的处理更加严格。例如:
- 变量必须在使用前声明。
- null 和 undefined 是不同类型的值。
- parseInt() 和 parseFloat() 等函数的行为不同。
示例:
// 严格模式下的代码
"use strict";
console.log(typeof x); // 报错:x 未声明
数据类型的转换
JavaScript 提供了用于将一种数据类型转换为另一种数据类型的方法,包括:
- 类型转换: 使用 Number()、String() 和 Boolean() 等内置函数将值转换为不同的数据类型。
- 类型强制: 使用单等号(=)或双等号(==)操作符强制将值转换为不同的数据类型。然而,当使用双等号时,可能会发生隐式转换,这可能会导致意外结果。
演示代码:
console.log(parseInt("10")); // 10
console.log(String(10)); // "10"
console.log(Boolean("Hello World")); // true
console.log(10 == "10"); // true
console.log(10 === "10"); // false
结论
了解 JavaScript 数据类型及其细微差别对于编写高效、健壮的代码至关重要。通过仔细考虑变量的值和类型,您可以避免意外行为、提高代码的可读性,并确保程序可靠性。