【问题标题】:ReferenceError: Invalid left-hand side in assignment when really assigning a valueReferenceError:真正分配值时分配中的左侧无效
【发布时间】:2018-06-29 08:45:53
【问题描述】:

为什么这个sn-p在节点(10.5)

    .then(function() {
      this = {...this, ...payload};
      this.update();
      resolve({ok:true, node});
    });

给出以下错误:

ReferenceError: Invalid left-hand side in assignment

有效负载包含一些需要添加到this 的属性,或者如果该属性存在,则需要更新该属性。

我不明白为什么会出现这个错误:(

【问题讨论】:

标签: javascript node.js this variable-assignment


【解决方案1】:

嗯,错误是直截了当的,上面写着Invalid left-hand side in assignment,这意味着您在作业的左侧使用了错误的元素。

那是因为您正在编写 this = {...this, ...payload};,您试图在游览功能中向 this 写入值,这是错误的,不可能,因为您无法更改 this 并为其分配值,因为 JavaScript 不允许这样做。

如果您检查MDN this Reference,您会看到:

在大多数情况下,this 的值取决于函数的调用方式。 执行时不能赋值设置,每次调用函数时可能不同。

【讨论】:

  • 我觉得有道理。谢谢
【解决方案2】:

我不认为我们可以直接分配它,因为它有很多内部不可枚举的属性和其他类型的隐藏东西,我们可以使用 Object.assign

.then(function(){
      Object.assign(this,payload)
      this.update();
      resolve({ok:true, node});
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2018-06-10
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多