温习日志
——2023年1月16日下午 b站学习地址
学习内容
- JS高阶总览
- JS的引擎和运行时间
- JS知名的引擎有Chrome的V8、火狐的spiderMonkey等等
- JS的引擎有调用栈和堆
- JS是及时编译的语言
- DOM、Timer、Fetch API都是web的api不是JS原生的
- 运行时分为引擎、web APIs和回调队列
- 当调用栈中都处理完后,回调队列的回调函数会进入回调栈,这时候就形成了事件循环
- 执行上下文和回调栈
- 变量环境、作用域链和this关键字在执行上下文中
arguments
和this
关键字不在箭头函数中- 在代码中直接声明的是全局作用域
- 在函数中声明的是函数作用域,只有在函数内部可使用
- 全局变量会首先进入回调栈中,其次是函数,然后逐级进入
- 作用和作用域链
- 作用域分为三种,全局作用域、函数作用域和块级作用域
- 只有子作用域可以访问上级父级作用域
var
没有块级作用域,只有let
和const
才有块级- 同级的作用域是不能互相访问的
- 块级作用域中,直接声明函数通过函数语句的形式,该函数是没有块级作用域的
- 提升
- 函数语句的声明和var声明变量是存在提升的,会提升至代码的顶部执行
- 匿名函数不存在提升
- this关键字
- 箭头函数没有自己的
this
this
指向函数的直接调用者- 如果有
new
关键字,this
指向new
出来的这个对象 - 如果是先获取函数,后续再调用函数,这时候如果是严格模式,则
this
指向undefined - 在非严格模式下,全局的
this
是window
对象 var
声明的变量是存储在window
对象中的,let
和const
不是
- 箭头函数没有自己的
- 原始变量 vs. 对象
- 原始变量是直接存储在调用栈中的
- 对象在调用栈中存放了指针,指针指向堆中的存储数据
Object.assign({}, 对象1)
可以对{}
进行对象1的浅拷贝
明日计划
- 明天准备十二点起床
- 一点开始学习JS基础知识,晚上五点半结束
- 晚上六点半进行React的基础学习,八点半结束
- 九点开始Express JS的学习,学习至十点左右