【前端面试题】JavaScript 核心知识点解析(第一题到第十三题)
第一题解析:ES6模块化及常用语法
1. 变量声明
-
let:用于声明块级作用域的变量,具有以下特点:
- 不存在变量提升
- 不允许重复声明
- 存在暂时性死区
-
const:用于声明常量,特点包括:
- 声明时必须初始化
- 声明后不能重新赋值
- 块级作用域
2. 异步编程
- async:用于声明异步函数,返回一个Promise对象
- await:只能在async函数中使用,用于等待Promise对象的状态变为resolved
3. 常用方法
-
JSON.parse():将JSON字符串转换为JavaScript对象
const jsonStr = '{"name":"John", "age":30}'; const obj = JSON.parse(jsonStr);
-
数组方法:
- filter():创建一个新数组,包含通过测试的所有元素
- every():检测数组所有元素是否都符合指定条件
- includes():判断数组是否包含指定的值(区分大小写)
- find():返回数组中满足条件的第一个元素
- reduce():对数组中的每个元素执行回调函数,将其减少为单个值
- forEach():对数组的每个元素执行一次回调函数(空数组不执行)
- some():检测数组中是否有元素满足指定条件
-
字符串方法:
- trim():去除字符串两端的空白字符
- startsWith():判断字符串是否以指定的子字符串开头
- endsWith():判断字符串是否以指定的子字符串结尾
- includes():判断字符串是否包含指定的子字符串(区分大小写)
- indexOf():返回指定子字符串在字符串中首次出现的位置(与includes用法相似)
第二题解析:作用域相关概念
1. 块级作用域
- 变量在离开定义的块级代码后立即被回收
- 由
{}
、if、for、while等语句创建 - 使用let和const声明的变量具有块级作用域
2. 函数作用域
- 变量在定义的函数内部及嵌套的子函数中可见
- 使用var声明的变量具有函数作用域
- 函数参数也属于函数作用域
3. 变量提升
- JavaScript引擎将变量声明提升到其作用域的顶部
- var声明的变量会被提升,而let和const不会
- 函数声明也会被提升,且优先级高于变量提升
// 变量提升示例
console.log(x); // undefined(变量提升)
var x = 5;console.log(y); // 报错(let不会提升)
let y = 10;
第三题解析:XMLHttpRequest对象
1. 基本概念
- XMLHttpRequest = XML + Http + Request
- 本质:发送HTTP请求、处理HTTP响应、与服务器异步交换数据的对象
- 核心:基于HTTP协议进行数据交互
2. HTTP请求组成
- 方法(GET、POST等)
- URL(请求地址)
- 请求头(Headers)
- 请求主体(Body)
3. 常用属性和方法
- status:HTTP响应状态码(200表示请求成功)
- readyState:请求状态(4表示处理完毕)
- responseText:服务器返回的文本数据
- send():发送请求
- open():初始化请求
// 简单使用示例
const xhr = new XMLHttpRequest(