我必须关注一些测试页面:
var getNum = function(){
return 5;
};
var y = getNum()++; // This causes an error.
document.write("y = " + y);
导致firefox 27.01中出现此错误:
ReferenceError: invalid assignment left-hand side
var y = getNum()++;
如果我改变了行:
var y = getNum()++;
的
var y = getNum() + 1;
然后我没有错误。有人会碰巧知道为什么不允许使用getNum()++?感谢。
答案 0 :(得分:2)
tldr:没有意义。
++
运算符(仅限+=
) 仅适用于Reference Specification Type的表达式。也就是说,++
与“变量或属性表达式”一起使用时仅 有效。
引用类型用于解释诸如delete,typeof和赋值运算符[包括++,+ =等]之类的运算符的行为。例如,赋值的左侧操作数应生成引用[规范类型表达式]。
这就是JavaScript可以将值分配回适当的变量/属性的方式。如果无法进行此类分配,则会抛出运行时ReferenceError,例如尝试将++
应用于函数调用或文字表达式的结果时。
(上述摘要来自a previous answer of mine。)
答案 1 :(得分:1)
因为您基本上是在撰写y = 5++
。
答案 2 :(得分:0)
运营商++
等于+= 1
。
所以:
var y = getNum()++;
同样如下:
var y = 5 += 1;