js的一些概念(一)

JS

1. 作用域和作用域链

  • 在JavaScript中,作用域(Scope)和作用域链(Scope Chain)控制着变量和函数的可访问性和生命周期
  • 作用域可以分为全局作用域(Global Scope)和局部作用域(Local Scope)
  • 全局作用域中的变量和函数可以在整个代码中被访问,它们在程序启动时创建,在程序结束时销毁。
  • 局部作用域是在函数内部创建的,只能在函数内部访问。每次调用函数时都会创建一个新的局部作用域,函数执行结束后,局部作用域中的变量通常会被销毁。
  • 作用域链是由多个作用域组成的链式结构,它决定了变量和函数的查找顺序。
  • 当在一个作用域中引用一个变量或函数时,JavaScript解释器会首先在当前作用域中查找,如果找不到,则会沿着作用域链向上查找,直到找到匹配的变量或函数或者到达全局作用域。
  • 在函数嵌套的情况下,每个函数都有自己的作用域,当内部函数访问外部函数的变量时,会通过作用域链向上查找。

2. 原型和原型链

  • 在JavaScript中,每个对象都有一个原型(Prototype)。

  • 原型是一个对象,其他对象可以通过原型继承其属性和方法。

  • 当访问一个对象的属性或方法时,如果对象本身没有该属性或方法,JavaScript引擎会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的顶端(即 Object.prototype)。

  • **原型链(Prototype Chain)**是由一系列对象组成的链式结构,用于实现对象之间的继承关系。当试图访问一个对象的属性或方法时,JavaScript引擎会按照以下步骤查找:

    1. 首先查找对象自身是否具有该属性或方法。
    2. 如果对象自身没有该属性或方法,则会沿着对象的原型链向上查找,直到找到或者到达原型链的顶端。

    原型链的形成是因为每个对象都有一个指向其原型对象的引用,通过这种引用关系,形成了对象之间的继承关系。

3.事件循环

事件循环是为了处理异步操作而设计的,它使得JavaScript可以在单线程环境中处理多个任务。

事件循环的基本原理是不断地从任务队列(Task Queue)中取出任务执行,直到任务队列为空。任务队列分为宏任务队列(Macro Task Queue)和微任务队列(Micro Task Queue)两种:

  1. 宏任务队列(Macro Task Queue):包含一些异步任务,比如定时器(setTimeout、setInterval)、事件回调(如用户交互事件、网络请求完成事件等)等。在每次事件循环中,从宏任务队列中取出一个任务执行,执行完毕后再从微任务队列中取出任务执行。
  2. 微任务队列(Micro Task Queue):包含一些优先级较高的任务,比如Promise的回调函数、MutationObserver的回调等。当执行栈为空时,会先执行微任务队列中的所有任务,直到微任务队列为空,然后再执行宏任务队列中的任务。

事件循环的过程可以简单描述为:

  1. 从宏任务队列中取出一个任务执行。
  2. 执行过程中遇到微任务,将其放入微任务队列。
  3. 执行完当前宏任务后,依次执行微任务队列中的任务,直到微任务队列为空。
  4. 回到步骤1,重复执行这个过程。
相关推荐
To_OC4 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
To_OC6 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn6 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
এ慕ོ冬℘゜7 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
随心点儿7 小时前
js postMessage 实现跨域发送消息-应用示例
javascript·ecmascript·postmessage
kyriewen9 小时前
我让AI改一个bug——它偷偷动了5个我没让它碰的地方
前端·javascript·ai编程
gis开发之家13 小时前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星14 小时前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
半个落月14 小时前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
观远数据14 小时前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel