guqzhou guqzhou
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub

guqzhou

喜欢所以去追求!
首页
快捷导航
下载站
  • Html 篇
  • Javascript 基础篇
  • 框架

    • Vue2
  • 前端文章

    • Css 篇
    • 微信开发
    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
关于
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue资源
  • 主站CDN
  • Vercel
  • Netlify
  • Github
GitHub
  • vue2
  • CSS

  • Javascript基础

  • javascript进阶

    • 作用域&&结构&&箭头函数
      • 作用域
        • 概念
        • 全局作用域
        • 局部作用域
        • 作用域链
      • 垃圾回收机制 GC
    • ES6模块化
    • Promise
    • EventLoop
    • 深拷贝和浅拷贝
  • typeScipt

  • vue2

  • vue3

  • react

  • vue实战

  • pinia的使用

  • gis

  • 前端文章

  • JavaScript文章

  • Vue文章

  • 小程序开发文章

  • uni-app

  • 学习笔记

  • TaroUI的使用

  • 工具使用

  • 前端
  • javascript进阶
guqzhou
2023-02-22
0

作用域&&结构&&箭头函数

# 作用域

# 概念

规定了变量能够访问的一个范围,离开这个范围"变量"就不能被访问

# 全局作用域

注意:

  1. 因为window对象添加属性也是全局的
  2. 函数中未声明的关键字变量为全局变量
  3. 尽可能声明全局变量,防止全局变量被污染

# 局部作用域

# 函数作用域

函数内部声明的变量只能被函数内部访问,外部无法直接访问。

function fun() {
    let name = 'lisi'
    console.log(name)  // lisi
}
console.log(name) // 此处报错,函数外部不能使用函数内部的局部变量
1
2
3
4
5

总结:

  1. 函数内部声明的变量,在函数外部无法被访问
  2. 函数的参数也是函数内部的局部变量
  3. 不同的函数内部声明的变量无法互相访问
  4. 函数执行完毕后,函数内部的变量实际被清空了

# 块作用域

{},代码块内部声明的变量外部将有可能无法被访问到

for(var i = 0; i<= 10; i ++) {
    // 代码块
    console.log(i)
}
console.log(i)
1
2
3
4
5

总结:

  1. let声明的变量会产生块作用域,var声明的变量不会产生块作用域
  2. const声明的变量会产生块作用域
  3. 不同代码块之间变量不能互通访问
  4. 推荐使用let和const

# 作用域链

本质就是底层变量的查找机制

  • 在函数被访问时,优先查找当前函数作用域中的变量
  • 如果当前查找不到则会依次逐级查找父级作用域直到全局作用域

话术:当前作用域查找,如果当前作用域没有,到上一级作用域查找,一直查找查找到最近的,一直查找到全局作用域为止

  1. 作用域链的本质是什么?
  2. 作用域链的查找规则是什么?

# 垃圾回收机制 GC

JS中内存的分配和回收都是自动完成的,内存在不使用的时候会被垃圾回收器自动回收的 js内存的生命周期

  • 分配内存
  • 使用内存
  • 回收内存 说明: 全局变量一般不会回收 局部变量的值不用了,就会自动回收

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

js垃圾回收机机制的方法:标记清除法和引用计数法

  • 标记清除法
    比如我们定义了一个数组,然乎这个数组会在栈里面开辟一个内存地址,指向堆里面的数组,表示数组被引用了,我们就标记为1;
    当我们把变量赋值为一个null,没有内存地址指向这个数组,没有被引用就变成0自动就被回收了
    嵌套或两个对象相互应用会导致内存泄漏
  • 引用计数法
    从根部扫描对象,能查到的就是使用的,查不到就要回收
上次更新: 2023/03/05, 15:03:00
原型、原型链和继承
ES6模块化

← 原型、原型链和继承 ES6模块化 →

最近更新
01
面向对象
01-05
02
typescript用localStorage封装过期时间
01-05
03
npm、pnpm、yarn删除文件缓存
12-14
更多文章>
Theme by Vdoing | Copyright © 2021-2024 guqzhou | 萌ICP备20238188号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式