当我运行++this.get('votes')
时,收到以下错误消息
Uncaught ReferenceError: Invalid left-hand side expression in prefix operation.
我收到了与++(this.get('votes'))
相同的错误消息。
我能够用this.get('votes') + 1
修复问题,但我无法弄清楚为什么前缀运算符不起作用。
为什么this.get('votes')
不能评估为0然后变为1并返回值1?
上下文中的原始代码:
var Comment = Backbone.Model.extend({
initialize: function(message) {
this.set({votes: 0, message: message});
},
upvote: function(){
// Set the `votes` attribute to the current vote count plus one.
this.set('votes', ++this.get('votes'));
}
}
var comment = new Comment('This is a message');
comment.upvote();
答案 0 :(得分:4)
根本问题是您无法分配到this.get('votes')
;即某种形式:
f() = x;
无效,因为f()
不是左值。
如果您查看specs,则会看到++x
与以下内容大致相同:
x = x + 1
并且您无法为函数调用分配值。你真的想说:
this.get('votes') = this.get('votes') + 1;
那不是JavaScript。