0
0
0
JavaScript字面量
2026-10-08
2026-10-08
字面量(Literals) 是直接在代码中表示固定值的语法形式,它们不需要计算或解析,直接代表其字面意义。JS 中都有哪些类型的字面量呢?
数字字面量
表示数值,可以是整数、浮点数、科学计数法等:
42 // 整数
3.14 // 浮点数
0xFF // 十六进制(255)
0o10 // 八进制
0b1010 // 二进制(10)
1.5e3 // 科学计数法(1500)
字符串字面量
用单引号 ' '、双引号 " " 或模板字符串 表示:
"Hello" // 双引号字符串
'World' // 单引号字符串
`ES6` // 模板字符串(支持插值:例如`username=${username}`)
布尔字面量
只有 true 和 false 两个值:
let isDone = true;
let isActive = false;
数组字面量
用 [ ] 表示,元素之间用逗号分隔:
[1, 2, 3] // 数字数组
["apple", "banana", "orange"] // 字符串数组
[1, "two", true, [4, 5]] // 混合类型数组
类数组字面量(类似数组)
const arrayLike = {0:'id', 1:'name', length:2};
类数组对象的判定条件
- 数字键索引:属性名为从 0 开始的连续数字(0, 1, 2, ...)。
- length 属性:明确表示“元素”数量,且值为非负整数。
- 不具备数组方法:如 push、forEach 等(除非手动绑定)。
访问的语法:arrayLike[0]结果是id
对象字面量
用 { } 表示,键值对形式:
const obj1 = { name: "Alice", age: 25 } // 简单对象
const obj2 = {
id: 1,
// 对象中的这种方法不能当做构造函数使用。
// 这里的this指向当前对象
getName() { return this.name; } // 方法:有两种定义方式,这是第1种。(ES6推荐这种方式。)
}
const obj3 = {
id: 1,
// 对象中的这种方法不能当做构造函数使用。
// 这里的this指向当前对象
getName: function(){ return this.name; } // 方法:有两种定义方式,这是第2种。
}
// 如果需访问 this(指向对象本身),不能用箭头函数
// 箭头函数的 this 自动继承外部作用域的this。
// 那你可能在想箭头函数的外层作用域不是obj4吗?obj4后面是一个大括号,这个大括号不是作用域吗?
// 当然不是。对象字面量 {} 不创建作用域,它只是语法结构
const obj4 = {
id: 1,
// 这里的this不会指向当前对象,指向外层作用域的this。
// 如果obj4对象是在全局作用域当中,则以下的this指向的就是window。
getName: () => this.name // 不会指向 obj4
};
注意:对象的属性访问有两种方式,代码如下:
const person = {
name: 'jack',
age: 20
}
// 第一种方式
console.log(person.name);
// 第二种方式
console.log(person['age']);
面试题:在 JavaScript 中[]和{} 的区别?
[]是数组对象{}是 javascript 对象
正则表达式字面量
用 / / 包裹的正则表达式:
/\d+/g // 匹配数字
/^[A-Za-z]+$/ // 匹配字母
const str = "a12b345c6";
console.log(str.match(/\d+/g));
// 输出:['12','345','6']
null 和 undefined 字面量
null表示空值(人为赋值)undefined表示未定义(默认值)
let empty = null;
let notDefined = undefined;
BigInt 字面量(ES2020)
在数字后加 n 表示大整数:
9007199254740992n // BigInt 类型
Symbol 字面量(ES6)
通过 Symbol() 创建唯一值:
const sym = Symbol("description");

