小火柴的博客笔记 小火柴的博客笔记
首页
学过的习
踩过的坑
想过的事
首页
学过的习
踩过的坑
想过的事
  • 学过的习

    • CSS的样式优先级权重
    • 事件冒泡和事件捕获
    • js模块可以通过两种方式对外暴露函数
    • js中的内存泄漏和内存溢出
    • js作用域链
      • js作用域链
    • 控制台暴露vue
    • es5常用知识总结
    • es6常用知识总结
    • es7常用知识总结
    • js模块化
    • nodeJs学习
    • node搭建服务器
    • webPack学习
    • js原型对象和原型链的理解
    • css阻塞与js阻塞
    • ajax的学习
    • 浏览器的重绘与重排
    • 函数防抖与函数节流学习记录
    • 浏览器储存学习
    • React起步
    • React的基本使用
    • React项目搭建
    • vue中attrs和listeners的使用
    • js的精度问题
    • React的状态管理
    • yarn和npm的对比
    • websocket的使用
  • 想过的事

  • 踩过的坑

  • 前端
  • 学过的习
小火柴
目录

js作用域链

# js作用域链

JavaScript 中的作用域链是一种数据结构,用于管理变量和函数的访问权限。它表示 JavaScript 程序中从当前执行环境到全局执行环境的一个链式列表。

作用域链中的每一个执行环境(一般是函数或块级作用域)都包含一个变量对象,该对象保存了该执行环境内的所有变量和函数声明。

当 JavaScript 程序试图访问一个变量或函数时,它会沿着作用域链从当前执行环境向上搜索,直到找到该变量或函数为止。如果没有找到,则会抛出 ReferenceError。

var x = 10;

function foo() {
  var y = 20;

  function bar() {
    var z = 30;
    console.log(x + y + z);
  }

  bar();
}

foo();
// 输出 60

说明:有三个变量:x,y 和 z。当 bar 函数被调用时,它会创建一个新的执行环境,并在该执行环境中声明一个新的变量 z。

当 bar 函数试图访问变量 x 时,由于它不在当前执行环境中,因此 JavaScript 引擎会在其作用域链(从当前执行环境向上)中寻找该变量。

# 分享几个关于js'链的题目

1、
  var x = 10;

  function fn() {

    console.log(x);

  }

  function show(f) {

    var x = 20;

    f();

  }

  show(fn);

--------------------------10---------------
原型链的查找是按照函数定义时的位置开始查找,与函数调用位置无关

2、
  var x = 10;

  function fn() {

    console.log(x);

  }

  function show(f) {

    x = 20;

    f();

  }

  show(fn);


--------------------------------------20-------------------------

3、
  var fn = function () {

    console.log(fn)

  }

  fn()

  var obj = {

    fn2: function () {

      console.log(fn2)

    }

  }

  obj.fn2()

----------------------------------------------
f(){
console.log(fn)
}

ReferenceError





#JS
js中的内存泄漏和内存溢出
控制台暴露vue

← js中的内存泄漏和内存溢出 控制台暴露vue→

Theme by Vdoing | Copyright © 2021-2023 X match
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式