【问题标题】:Javascript - this={} -> Invalid left-hand side in assignment - "CLOSED"Javascript - this={} -> 分配中的左侧无效 - “CLOSED”
【发布时间】:2018-02-19 17:28:29
【问题描述】:

1.为什么this={}显示

未捕获的 ReferenceError:分配中的左侧无效 同时 window = {} 正在工作?

2.window={} 正在工作但没有使窗口对象为空?

【问题讨论】:

  • 1.因为this 在语言中是特殊的。 2、因为window在浏览器中是特殊的。例如。在 Firefox 中,window 实际上是一个 getter,并没有对应的 setter。
  • 你有没有见过像这样覆盖this 键的语言?顺便说一句,关于thisIt can't be set by assignment during execution
  • 1.因为this 是不可分配的,并且this 可以根据范围引用任何内容。但是,您可以执行 this.foo = {} 之类的操作。请再次注意 this 的含义 2. window = {} 似乎有效 - 因为它没有设置器。

标签: javascript window this javascript-objects


【解决方案1】:

您不能在执行上下文期间为 this 关键字赋值,因为它是不可变的。

【讨论】:

  • “因为它与执行上下文相关联,因此它是不可变的。” 为什么这意味着不可变?变量还与执行上下文相关联,并且它们是可变的。
  • 这是一个运算符/关键字,正如 MDN Web 文档所说:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 我已经编辑了我的评论(是的,它是一个关键字,不,它不是一个运算符)。我评论的另一部分呢?
  • 它是不可变的,除非你调用apply或bind,否则你不能给它赋值。否则它不会抛出 OP 正在引用的错误。
  • 我知道你不能分配给它。我怀疑您给出的原因:“因为它与执行上下文相关”。正如我所说,在函数内部定义的变量也与执行上下文相关联。它们是可变的。所以“与执行上下文的关联”不是不变性的原因。
【解决方案2】:

这是一个关键字

window 是一个全局对象

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 2018-10-02
    • 2011-01-26
    • 2013-10-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多