一、原始类型
JavaScript中的原始类型是不可变的数据类型,它们直接存储在栈内存中。
1. Undefined类型
javascript
let notDefined;
console.log(notDefined); // undefined
console.log(typeof notDefined); // "undefined"
// 未声明的变量与undefined的区别
// console.log(neverDeclared); // ReferenceError
2. Null类型
javascript
let emptyValue = null;
console.log(emptyValue); // null
console.log(typeof emptyValue); // "object" (这是JavaScript的历史遗留问题)
// null与undefined的区别
console.log(null == undefined); // true
console.log(null === undefined); // false
3. Boolean类型
javascript
let isActive = true;
let isCompleted = false;
// truthy和falsy值
console.log(Boolean('')); // false
console.log(Boolean('hello')); // true
console.log(Boolean(0)); // false
console.log(Boolean(1)); // true
4. Number类型
ini
let integer = 42;
let float = 3.14;
let scientific = 2.5e3; // 2500
let hex = 0xFF; // 255
let binary = 0b1010; // 10
let octal = 0o744; // 484
// 特殊数值
let infinity = Infinity;
let negativeInfinity = -Infinity;
let notANumber = NaN;
console.log(typeof NaN); // "number"
5. BigInt类型
ini
// 超过Number安全整数范围的数字
const bigNumber = 9007199254740991n;
const huge = BigInt(123456789012345678901234567890);
console.log(bigNumber + 1n); // 9007199254740992n
6. String类型
ini
let singleQuote = 'Hello';
let doubleQuote = "World";
let templateLiteral = `Hello ${doubleQuote}`;
console.log(templateLiteral); // "Hello World"
// 字符串方法
let message = "JavaScript数据类型";
console.log(message.length); // 11
console.log(message.includes('数据类型')); // true
7. Symbol类型
ini
const uniqueKey = Symbol('description');
const anotherKey = Symbol('description');
console.log(uniqueKey === anotherKey); // false
// 全局Symbol注册表
const globalSymbol = Symbol.for('globalKey');
const sameGlobalSymbol = Symbol.for('globalKey');
console.log(globalSymbol === sameGlobalSymbol); // true
二、引用数据类型
1.Object类型
对象是JavaScript中最复杂的数据类型,用于存储键值对集合。
javascript
// 对象字面量
let person = {
name: '张三',
age: 25,
isStudent: true,
greet: function() {
return `你好,我是${this.name}`;
}
};
console.log(person.name); // "张三"
console.log(person.greet()); // "你好,我是张三"
// 动态添加属性
person.country = '中国';
delete person.isStudent;
2.Array类型
数组是特殊的对象,用于存储有序的数据集合。
javascript
let numbers = [1, 2, 3, 4, 5];
let mixed = [1, 'hello', true, { name: '李四' }];
// 数组方法
numbers.push(6); // 末尾添加
numbers.pop(); // 末尾删除
numbers.unshift(0); // 开头添加
numbers.shift(); // 开头删除
// 遍历数组
numbers.forEach((item, index) => {
console.log(`索引${index}: ${item}`);
});
3.Function类型
函数在JavaScript中也是一等公民,可以作为参数传递和返回值。
javascript
// 函数声明
function add(a, b) {
return a + b;
}
// 函数表达式
const multiply = function(a, b) {
return a * b;
};
// 箭头函数
const divide = (a, b) => a / b;
// 高阶函数
function createCalculator(operation) {
return function(a, b) {
return operation(a, b);
};
}