Javascript:作用域链何时创建?

2024-04-20

我听到过两种说法:

当定义函数时:

  • In book Professional Javascript for Web Developers, 3rd Edition, 在里面Chapter 7: Function Expressions封闭部件:

当compare()被定义时,它的作用域链是 已创建,预加载全局变量对象,并保存到内部 [[Scope]] 属性。 当函数被调用时,会创建一个执行上下文,并通过以下方式构建其作用域链 复制函数的 [[Scope]] 属性中的对象。

据说作用域链是在函数 id 定义时创建的.

当函数被调用时:

  • 在本文中:JavaScript 中的执行上下文和堆栈是什么? http://davidshariff.com/blog/what-is-the-execution-context-in-javascript/:

所以我们现在知道每次调用函数时都会创建一个新的执行上下文。然而,在 JavaScript 解释器内部,对执行上下文的每次调用都有两个阶段:

  • Creation Stage [when the function is called, but before it executes any code inside]:
    • 创建变量、函数和参数。
    • 创建范围链.
    • 确定“this”的值。
  • Activation / Code Execution Stage:
    • 赋值、函数引用以及解释/执行代码。

据说作用域链是在调用函数时创建的.

那么哪个是正确的呢?


函数有一个内部 [[Scope]] 属性,该属性设置为定义函数的范围,当它被定义时.

该作用域与执行函数时创建的新作用域一起成为作用域链的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript:作用域链何时创建? 的相关文章

  • jquery/javascript setInterval

    目前我正在开发一个用户通知提醒消息功能 我设法使用setInterval控制我的 Ajax 调用 检查是否有用户的通知消息 但我的问题是我只想要通知消息 在页面上出现一次 现在它在屏幕上显示多个通知警报消息 我知道你可以使用setTimeo
  • 停止 jQuery 循环设置 display:none;

    我正在创建一个小游戏 用户从一组项目中进行选择 然后对所选项目进行洗牌并选择一个 我正在使用 jQuery 循环 http jquery malsup com cycle http jquery malsup com cycle 运行主动画
  • 如何阻止 HTML 输入字段中的特殊字符? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是想问一下如何在html输入字段中阻止 等特殊字符 为什么不使用html5呢
  • JS Facebook登录iOS8

    我的 facebook 应用程序上的登录按钮在 iOS 8 中完全停止工作 我以为这是我所做的事情 但是当我从他们的网站获取 facebook 示例 html 并将其应用到我的页面时 它仍然不起作用 我的应用程序 ID 已被替换 与 xxx
  • 如何在 Rollup 中配置从多个输入文件仅生成单个输出文件?

    配置Rollupjs生成库时 如果输入是由多个javascript文件组成的数组 我们如何才能将这些输入生成为一个输出 js 文件呢 export const lgService input src app services livegiv
  • 如何通过ajax点击时从javascript文件执行节点(控制台)命令

    我是 Node js 新手 这是我的问题 例如 我得到了 Web 应用程序 并且从该应用程序中我有一个按钮 单击按钮后我想运行节点控制台命令 例如 node socket io So button on click function run
  • 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

    所以我正在尝试构建 javascriptair site 在 的里面package json有一个 npm 脚本指向 javascript 命令 package scripts 找到该存储库https github com kentcdod
  • 封装的闭包与类?

    我是 JS 来自 C etc 的新手 我突然想到闭包似乎是比类更简单 更方便的处理封装的方法 这段代码似乎给出了一种处理封装的简单方法 function addProperty o var value o get function retu
  • 在 Angular 中将图像 url 转换为 base64

    我正在努力尝试将给定的图像 url 转换为 base64 在我的例子中 我有一个带有图像路径的字符串 var imgUrl assets logoEmpresas empresa logoUrl 我如何直接将给定的图像网址转换为base64
  • Postman如何发送请求? ajax,同源策略

    我发现了这个非常有用的 Chrome 扩展程序 名为 Postman 这是一个非常有用的扩展 特别是当您正在编写 RESTful 应用程序时 我感到困惑的一件事是这个插件 扩展如何能够在不同的域上成功发送 POST 请求 我尝试像这样使用
  • 将带有非字符串关键字的 dict 传递给 kwargs 中的函数

    我使用具有签名功能的库f args kwargs 我需要在 kwargs 参数中传递 python dict 但 dict 不包含关键字中的字符串 f 1 2 3 4 Traceback most recent call last File
  • 如何将 !important 添加到 CSS-in-JS (JSS) 类属性?

    我正在尝试使用一些 CSS in JS 类这个答案 https stackoverflow com questions 54525334 how can i change the label size of a material ui te
  • 无法读取未定义的属性“messageHandlers”

    我想将 JavaScript 变量传递给 Swift 我在 JavaScript 中遇到错误并进行了搜索 但没有得到任何结果 错误是 类型错误 无法读取未定义的属性 messageHandlers 任何人都可以帮忙吗 我在 Xcode 中的
  • 多个指令 [myPopup、myDraggable] 请求新的/隔离的范围

    我编写了一个对话框指令 myPopup 和另一个用于拖动此对话框的指令 myDraggable 但我总是收到错误 多个指令 myPopup myDraggable 请求新的 隔离的范围 这是一个笨蛋 http plnkr co edit k
  • 设备收到 GCM Android 通知但未显示

    尽管通知已在应用程序本身中注册 但我的 Ionic Android 应用程序的 GCM Cloud 消息通知未出现在我的设备的主屏幕中 我正在使用 npm 模块node gcm https www npmjs com package nod
  • 带条件的 Array.join()

    我该如何使用Array join 有条件的函数 例如 var name aa bb var s name join 输出是 aa bb 我想添加一个条件 仅显示不为空的单词 aa bb 您可以使用Array filter https dev
  • html5 canvas贝塞尔曲线获取所有点

    我喜欢从贝塞尔曲线中得到一些点 我发现 在javascript中查找三次贝塞尔曲线的所有点 https stackoverflow com questions 15397596 find all the points of a cubic
  • 监听鼠标事件……除了 div 的溢出:滚动滚动条?

    关于如何监听 mousedown 的任何建议 document exceptdiv 的溢出 滚动滚动条 我不确定滚动条是什么元素is为了参考它 您可以使用以下命令自行检查目标 document on mousedown function e
  • 如何提交表单 onkeyup 操作

    我正在尝试保存表格onkeyup行动 我是 jQuery 新手 这可能吗 我很感激任何帮助 编辑1 保存表单意味着保存到服务器 有没有办法增加0 2秒的延迟 此代码将在 keyup 上提交您的表单 element bind keyup fu
  • 在客户端将大文件(> 2GB)压缩为 ZIP

    我使用构建上传工具node js and socket io 因为他们通常会上传令人难以置信的巨大文件 而普通的上传表单将无法工作 问题是他们想在发送之前将文件压缩成zip 以提高传输效率 我一直在研究压缩方法 例如JSZip http s

随机推荐

  • React-native:如何在不单击react-native-maps中的标记的情况下显示工具提示

    我正在使用react native maps模块 我已经给出了纬度和经度值 并且我使用MapView Marker在单击标记时显示标记和工具提示 但是 现在我想在地图最初加载时显示工具提示 而无需单击标记 这是我的代码
  • 使用 eval 加载模块

    我在 Perl 和内置函数方面遇到了一些麻烦eval http perldoc perl org functions eval html 我浏览了网络 但找不到任何答案或示例代码 我想动态加载模块 在执行时间之前我不知道它们 module
  • 嵌套 RibbonApplicationMenuItem 时出错

    我想建立一个RibbonApplicationMenu 其中应嵌套一个RibbonApplicationMenuItem or RibbonApplicationSplitMenuItem 例如喜欢这个
  • Azure Web 角色如何在没有入口点的情况下运行?

    出于好奇 我打开了我的 Azure Web 角色项目 导航到包含以下内容的文件 RoleEntryPoint后代阶级和完全删除了该类定义 然后我打包了该角色并将其部署在 Azure 中 该角色启动时没有任何错误指示 这怎么可能行得通 除了
  • 如何找出 WPF 应用程序中的焦点在哪里?

    我的 WPF 应用程序中有一个搜索屏幕 该屏幕作为 TabControl 的 TabItem 中的 UserControl 实现 当用户切换到 搜索 选项卡时 我希望焦点进入一个特定字段 因此 我向 Xaml 中的 UserControl
  • AKSequencer 计数一或两个小节

    在当前序列开始播放之前需要播放 1 或 2 个小节进行计数 只需点击一下即可计入 能够做类似的事情会很酷 player sequencer setTime MusicTimeStamp 4 将时间设置为0 不起作用 使用 AKSequenc
  • 如何计算scipy中曲线拟合的可能性?

    我有一个非线性模型拟合 如下所示 深色实线是模型拟合 灰色部分是原始数据 问题的简短版本 如何获得该模型拟合的可能性 以便我可以执行对数似然比测试 假设残差服从正态分布 我对统计学比较陌生 我目前的想法是 从曲线拟合中得到残差 并计算残差的
  • YouTube 视频 ID 的最大长度是多少?

    我正在开发一个显示 YouTube 视频的应用程序 我想将视频 id 存储在数据库中 但是因为会有很多视频 我想最小化所需的空间 所以有人知道 youtube 上视频 id 的最大长度吗 几乎可以肯定它会保持在 11 个字符 各个字符来自一
  • 是否可以创建一个不带参数的 C 可变参数函数? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中是否可以有一个没有非可变参数的可变参数函数 https stackoverflow com questions 2622147 is it possible to have a variadic
  • 按渐近增长率对函数排序

    按渐近增长率的非降序列出以下函数 如果两个或多个函数具有相同的渐近增长率 则将它们分组在一起 g1 n n g2 n n 3 4n g3 n 2n log 以 2 为底 n g4 n 2 n g5 n 3 3 log 以 3 为底 n g6
  • 在 JSF 中使用消息束时从验证消息中删除组件 ID

    我正在练习JSF 我创建了一个带有用户 ID 和密码字段的登录屏幕 现在两个输入字段都需要 true 我创建了 message properties 文件并向其中添加了以下验证 ID javax faces component UIInpu
  • Codeigniter:使用 RESTful 服务

    是否有一个易于设置的 Codeigniter REST 库 我可以用它来使用 RESTful 服务 我尝试设置this https github com philsturgeon codeigniter restclient图书馆 但无法设
  • 无法在 macOS High Sierra 上打开 SQL 编辑器

    自从更新到 macOS High Sierra 以来 我一直无法在 MySQL Workbench 上打开 SQL 编辑器 When I try to connect to the database as usual I m given t
  • 如何获取真实的UTC时间戳(与客户端无关)?

    有没有办法获得real当前 UTC 时间戳而不依赖于客户端时间 这可能无法在每个客户端上正确设置 我知道 JavaScript 的getTime 我可以获取以毫秒为单位的 UTC 时间戳 它独立于客户的时区 但我认为它取决于客户的当前时间
  • CoTaskMemAlloc v malloc v AllocHGlobal

    我读过 在 Windows 上 malloc 与 CoTaskMemAlloc 不同 CoTaskMemAlloc 与 AllocHGlobal 不同 对于 C 用户来说 这意味着如果我有一个返回 malloc 指针的 C 函数 我需要对其
  • Android SeekBar 最小和连续浮点值属性

    我正在寻找一种在 SeekBar 中实现最小值的方法 并且还可以选择增加十进制数字 例如 当前我的 SeekBar 的最小值设置为 0 但我需要它从值 0 2 开始 另外 我希望能够让用户以 0 1 的精度选择 0 2 到 10 0 之间的
  • 如何理解Cassandra中的“灵活模式”?

    我是 Cassandra 的新手 可以在下面的维基百科中找到 列族 自 CQL 3 起称为 表 类似于 RDBMS 关系数据库管理系统 中的表 列族包含行和列 每行都由行键唯一标识 每行有多列 每列都有名称 值和时间戳 与 RDBMS 中的
  • 在 Windows 10 和 PHP 7.3 中安装 AMQP

    我想在 Windows 10 中使用 PHP 7 3 安装 AMQP 以便在 symfony 4 中使用 Windows 不使用任何 apache iis nginx 并直接由 symfony 运行 一切还好 直到 我决定在项目中使用rab
  • ggplot2:将面/条文本分割成两行

    考虑以下带有长面 条带文本的 ggplot2 图 断成两行 该文本超出了专门用于分面标题的区域 library ggplot2 x lt c 1 3 1 3 y lt c 3 1 1 3 grp lt c 0 0 0 1 1 1 p lt
  • Javascript:作用域链何时创建?

    我听到过两种说法 当定义函数时 In book Professional Javascript for Web Developers 3rd Edition 在里面Chapter 7 Function Expressions封闭部件 当co