# front-end-learning **Repository Path**: shannon-tam/front-end-learning ## Basic Information - **Project Name**: front-end-learning - **Description**: 重新学习一下前端知识,巩固的同时看看新的知识点! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-28 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 前端学习路径 ## js 基础 ### 申明变量 #### var let const | 声明方式 | 标准化时间 | 支持情况 | | -------- | ----------------------------------------- | ---------- | | var | 1995 | 所有浏览器 | | let | 2015(部分浏览器在 ES5 时代已有实验性实现) | 所有浏览器 | | const | 2015(部分浏览器在 ES5 时代已有实验性实现) | 所有浏览器 | ##### var 存在的问题 1. 函数作用域:var 只有 函数作用域 或 全局作用域(非块级作用域);在 {}(如 if、for 块)中声明的 var 变量会“泄露”到外层作用域。 2. 存在变量提升的问题:var 申明会被“提升”到作用域顶部,但赋值不会,导致在声明前访问变量得到 undefined,而非报错 3. 允许重复声明:同一作用域允许多次声明同一个变量不会报错,只会覆盖 4. 污染全局对象(浏览器中):在全局作用域用 var 声明的变量会自动成为 window 的属性 ##### let/const 解决的问题; let 申明变量, const 声明常量 1. 块级作用域:let、const 块级作用域,在 {} 中声明的变量,只在 {} 内有效 => 避免变量泄露 2. 暂时性死区(TDZ)(即未申明便使用时会报错而不是 undefined)=> 禁止在声明前使用(更安全)!也可以说是一个缺点 3. 禁止重复声明 => 减少意外覆盖 4. 在全局中申明也不会挂载到 window ##### const 在 let 的基础上更加强化 1. 必须初始化(声明时赋值) 2. 不能重新赋值(引用不可变)但是对于对象、数组等引用类型,只是不可以改变引用值,但是具体的内容是可以修改的 3. 适用于大多数“只读”场景,提升代码健壮性 ##### 优先使用 const > let >> var ### 数据类型 ##### 原始类型(基本类型、值类型、简单类型);复杂类型(对象类型、复杂类型、复合类型) ###### 原始类型(Primitive Types) 特点:不可变(immutable),按值传递,存储在栈内存中 | 数据类型 | 引入时间 | 支持情况 | 说明 | 示例 | 备注 | | -------- | -------- | -------- | ---- | ---- | ---- |