JavaScript数据类型

一、原始类型

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);
    };
}
相关推荐
默_笙14 分钟前
😁 LLM 不知道的事它不会说"不知道",而是会"编"——RAG 就是让它闭嘴先查资料
前端·javascript
Revolution6115 分钟前
变量提升到底提升了什么:为什么 var 是 undefined,let 却直接报错
前端·javascript
labixiong20 分钟前
ES2026 落地了什么?两个真上线的特性 + 两个被毙的,一次讲清楚
javascript·ecmascript 6·ecmascript 8
IT知识分享34 分钟前
WebP转JPG开发经验:从格式解码到本地批量转换的实践
javascript·python·图片转换
肖志-AI全栈38 分钟前
JavaScript 快速排序:从 pivot、双指针到分治思想
开发语言·javascript·排序算法
To_OC2 小时前
拼路径读文件总踩坑?我把 Node 的 path 和 fs 彻彻底底捋了一遍
javascript·后端·node.js
自然 醒2 小时前
记录We码开发者工具的一个bug
前端·javascript·bug
葡萄城技术团队2 小时前
HTML元素单元格:用自定义 CellType 扩展 SpreadJS 的显示能力
前端·javascript·html
shawxlee13 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
kyriewen14 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试