js基础重点复习

变量提升

  • 变量和函数声明在代码执行之前就被提升到当前作用域的顶部。
  • 声明式函数会将整个函数体提升到顶部。因此可以在声明前定义。变量式的函数声明只会将变量进行提升。
  • 声明式函数的提升 > 变量提升

题目解法:分为编译阶段(变量提升)和执行阶段两步走

作用域:

  • JS是词法作用域,作用域范围和作用域链在函数定义时就确定。let const支持块级作用域{}内都属于。
  • 二次定义:let,const不允许在同作用域重复定义。存在暂时性死区。
  • 作用域查找:从当前函数的作用域查找向外层查找,注意是函数声明的位置,而不是运行的位置。
  • LHS 和 RHS:const a = b左查找没找到会创建全局变量,右查找没找到直接报错,严格模式都报错
  • 在全局声明的变量在node中不会挂载到全局,在浏览器中会挂载到全局。

闭包:

闭包就是函数内能访问到外层的作用域,当外层作用域销毁之后,仍能访问到变量。

数据私有化

js 复制代码
function person() {
  var age = 18;
  age++;
  console.log(age);
}

person(); // 19
person(); // 19
person(); // 19

经典案例

javascript 复制代码
for (var i = 0; i < 5; i++) {//块作用域+闭包dao zhi
  setTimeout(()=>{
    console.log(i); // 输出:5 5 5 5 5
  },500)
}

解决方案
//函数包装,IIFE
//let

this:

  • 谁调用this,this就指向谁。
  • new调用中的this指向新对象
  • 箭头函数内部无this,继承外部的this
  • new>显示绑定>隐式绑定

原型链 & 继承

父类给子类的是什么? 属性和方法。属性怎么给?对象的属性?基本类型的属性?自身的属性?原型上的属性?

  • 原型链说简单点就是把一堆对象串成糖葫芦。当查找属性时从最底下的对象开始找。无法通过底下的对象修改上层对象的属性。添加已存在的属性会出现两种情况:1.添加到自身2.修改失败。3.触发setter

  • 父类构造中的this.XXX在子类中的体现:子类实例的引用类型属性,并不是通过 "继承" 得到的,而是通过调用父类构造函数,在自己的实例上重新创建的。

1.原型链继承:子类使用父类new出的对象当原型。缺点:父类的引用数据类型为子类共享。 2.构造函数继承:利用了父函数.Call方法为自己添加属性,但是无法继承原型链 3.完美方案:利用.call给自身添加单独的父对象属性。利用object.create来创建中间层对象防止二次调用父构造。通过原型链来实现继承。

垃圾回收

先找后收 找:引用计数法 可达性分析 回收:标记清除算法(碎片化) 标记整理算法 复制算法(利用空间小) 分代GC(新生代负责短周期的对象,用复制算法空间换时间,规避了清理和移动,老年代负责长周期对象,用标记清除+标记整理)

相关推荐
kyriewen1 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
gis开发之家5 小时前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星6 小时前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
半个落月7 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
观远数据7 小时前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel
CoderWeen7 小时前
我写了个能一步步点着看的 Dijkstra 可视化项目(Vue3 + Leaflet + Generator)
前端·javascript·vue.js
爱分享的程序猿-Clark8 小时前
【前端分享】vue开发项目,如何实现 从A页面跳转到B页面,并传值!
前端·javascript·vue.js
冰暮流星8 小时前
javascript之String方法介绍
开发语言·javascript·ecmascript
Hilaku8 小时前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
名字还没想好☜9 小时前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate