为什么不能在函数调用前使用前缀运算符?

Why can't I use the prefix operator in front of a function call?

当我 运行 ++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 而 return 不应为值 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();

潜在的问题是您不能分配给 this.get('votes');即,某种形式:

f() = x;

无效,因为 f() 不是左值。

如果您检查 specs,您会发现 ++x 与:

大致相同
x = x + 1

并且您不能为函数调用赋值。你真的想说:

this.get('votes') = this.get('votes') + 1;

那不是 JavaScript。