【问题标题】: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});
});