JavaScript面试问题
一、JavaScript 基础
1. JavaScript 的核心特性
- 动态类型:变量无需声明类型。
- 解释型语言:逐行解释执行。
- 单线程:基于事件循环模型运行。
- 原型继承:通过原型链实现对象继承。
2. 数据类型与类型转换
- 基本数据类型:
String
、Number
、Boolean
、Null
、Undefined
、Symbol
、BigInt
。 - 引用数据类型:
Object
(包括数组、函数等)。 - 隐式类型转换:
console.log(1 + '2'); // '12' console.log(true + 1); // 2
3. 变量声明的区别
特性 | var | let | const |
---|---|---|---|
作用域 | 函数作用域 | 块级作用域 | 块级作用域 |
重复声明 | 允许 | 不允许 | 不允许 |
修改值 | 可修改 | 可修改 | 不可修改(但对象属性可变) |
4. 闭包是什么?如何使用?
- 定义:闭包是指一个函数能够记住并访问它的词法作用域,即使这个函数是在它的词法作用域之外执行。
- 用途:封装私有变量、实现模块化、延迟计算等。
function createCounter() {let count = 0;return function() {count++;return count;};
}const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2