javascript - 词法闭包是函数执行上下文的属性吗?

标签 javascript closures

我知道,当我在某些词法环境中定义一个函数时,它决定了该函数可以访问的词法闭包以及来自外部作用域和原型(prototype)链中的变量。

我的问题是,当我们使用 bind 显式更改函数的执行上下文时会发生什么或callapply 。这如何影响由于词法闭包而应该在函数中可用的变量以及应该在原型(prototype)链中找到的变量。

我的直觉告诉我,之前的闭包已被替换,并且新的原型(prototype)链应该可用,并且根据场景,在新的原型(prototype)链中可能会或可能不会找到变量,但是如果我正在创建一个新的执行上下文,它就会引出一个问题,从而有一个新的词法闭包,那么我可以以某种方式将一些其他变量插入到这个新创建的词法闭包中吗?

还有没有办法改变 this在调用函数之前保留其先前的词法闭包?

最佳答案

bindcallapply 仅更改函数的 this 值(即其上下文),而不是其范围(即环境)。

所以任何环境。即使使用上述方法,变量仍然可用。只有this会被改变。

关于javascript - 词法闭包是函数执行上下文的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37256441/

相关文章:

javascript - Haraka Smtp 服务器(编辑出站电子邮件正文内容)

javascript - 使用 node.js child_process 调用 python 脚本

javascript - 如何通过javascript获取元素宽度

javascript - 对于异步内部函数,外部函数的函数参数是否会发生变化?

scala 新手遇到元组和闭包问题

javascript - 没有嵌套函数的闭包

javascript - 如何使用 Jasmine 模拟另一个模块中所需的模块

javascript - 从 db Firebase 获取用户

closures - 我如何在 Go 中使用 Filepath.Walk?

javascript - 让 vs var : scopes in for-loop