2024/4/24总结

js进阶

作用域

作用域分为全局作用域局部作用域

局部作用域

分为块级作用域 ( 就是使用 {} 包裹起来的代码称为代码块 )和函数作用域( 顾名思义就是函数包裹的部分 )

let 和 const 声明的常量会产生块级作用域 var不会产生块作用域

作用域链就是最底层的查找机制,其实就是就近原则。

垃圾回收机制

内存的生命周期

  • 内存分配 声明变量、函数、对象的时候,系统会自动分配内存
  • 内存使用 读写内存、也就是使用变量、函数等
  • 内存回收 使用完毕,由垃圾回收器自动回收

全局变量不会回收

局部变量会自动回收

内存泄漏 程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏

  • 栈:基本数据类型,由操纵系统自动分配函数的参数值,局部变量
  • 堆:复杂数据类型,由垃圾回收机制回收
算法说明:
  • 引用计数法

如果没有对象对它进行引用,那么就会被回收

缺点 :嵌套引用会出问题 ,如果俩个对象相互引用,垃圾回收器不会回收,从而导致内存泄漏。

  • 标记清除法

从根部定期扫描,凡是能到达的对象,都是还需要使用的,无法到达的标记为不再使用,并且进行回收

闭包

一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

作用:封闭数据、提供操作,外部可以访问函数内部的变量

变量提升

它允许在变量声明之前即被访问(仅仅存在于 var 声明的变量)

变量在 var 声明之前被访问,变量的值为 undefined ,变量提升只存在当前作用域下。

函数也是可以先声明之前就被调用

函数表达式不能,会出问题

动态参数 arguments

是函数内部内置的伪数组变量,只存在函数中,作用是动态获取函数的实参。

剩余参数

...变量名字

... 是语法符号,置于最末函数形参之前,用于获取 多余 的实参

借助 ... 获取的剩余实参,是个真数组,开发中,提倡多使用 剩余参数

箭头函数的 this 不会创建自己的 this ,它只会从自己的作用域脸的上一层沿用 this

相关推荐
2351639 分钟前
【并发编程】详解volatile
java·开发语言·jvm·分布式·后端·并发编程·原理
折翼的恶魔1 小时前
前端学习之样式设计
前端·css·学习
IT_陈寒1 小时前
JavaScript性能优化:3个被低估的V8引擎技巧让你的代码提速50%
前端·人工智能·后端
云飞云共享云桌面1 小时前
SolidWorks服务器多人使用方案
大数据·运维·服务器·前端·网络·电脑·制造
Algebraaaaa1 小时前
Qt中的字符串宏 | 编译期检查和运行期检查 | Qt信号与槽connect写法
开发语言·c++·qt
Red Car1 小时前
javascript 性能优化实例一则
开发语言·javascript·ecmascript
友友马1 小时前
『 QT 』Hello World控件实现指南
开发语言·qt
艾小码1 小时前
从Hello World到变量数据类型:JavaScript新手避坑指南
前端·javascript
一只学java的小汉堡1 小时前
Java 面试高频题:HashMap 与 ConcurrentHashMap 深度解析(含 JDK1.8 优化与线程安全原理)
java·开发语言·面试
huohaiyu2 小时前
Hashtable,HashMap,ConcurrentHashMap之间的区别
java·开发语言·多线程·哈希