gpt4 book ai didi

javascript - 更改函数词法环境中绑定(bind)的值

转载 作者:行者123 更新时间:2023-11-28 02:41:20 26 4
gpt4 key购买 nike

调用函数时,会为该调用创建一个新的词法环境。该词法环境包含一个环境记录,该记录又保存该环境中存在的本地命名绑定(bind)。因此,例如:

(function () {

var x = 123;

// other code

}());

在上面的函数调用中,函数的词法环境中将存在一个名为 "x" 和值 123 的绑定(bind)。

现在,如果我们想更改该绑定(bind)的值,我们可以:

  1. 将标识符x设置为赋值运算符之一的左侧:

    x = 456; 
    // the value of the "x" binding has changed to 456
  2. 将标识符x设置为前缀/后缀递增/递减运算符的操作数:

    x++;
    // the value of the "x" binding has changed to 124

我的问题:这是更改“x”绑定(bind)值的唯一两种方法吗?

最佳答案

嗯,我认为我们不应该在这里谈论“绑定(bind)”。 @Incognito 在问题评论中给出的链接描述了变量和函数的绑定(bind) - 但没有描述它们的

由于示例中的“x”分配了一个原始值,我认为没有办法改变它 - 如果不是在赋值中(直接或语法糖)。

例如,这个...

var x = 42;
x.y = 24;

...实际上不会导致更改x(它会转换为一个对象,分配一个新属性,但随后该对象将被丢弃)。

还有这个...

function x() { ... }

...也无法为 x 分配新值。

更新:我的观点是,JS 中的 'var x = 42' 语句(但不是 Erlang)不会导致绑定(bind) 42 (数字文字)到变量x

关于javascript - 更改函数词法环境中绑定(bind)的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12603160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com