JavaScript数据类型

一、原始类型

JavaScript中的原始类型是不可变的数据类型,它们直接存储在栈内存中。

1. Undefined类型

let notDefined;
console.log(notDefined); // undefined
console.log(typeof notDefined); // "undefined"

// 未声明的变量与undefined的区别
// console.log(neverDeclared); // ReferenceError

2. Null类型

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类型

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类型

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类型

// 超过Number安全整数范围的数字
const bigNumber = 9007199254740991n;
const huge = BigInt(123456789012345678901234567890);

console.log(bigNumber + 1n); // 9007199254740992n

6. String类型

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类型

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中最复杂的数据类型,用于存储键值对集合。

// 对象字面量
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类型

数组是特殊的对象,用于存储有序的数据集合。

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中也是一等公民,可以作为参数传递和返回值。

// 函数声明
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);
    };
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值