应用++运算符返回函数值会导致错误

时间:2014-04-14 20:40:46

标签: javascript

我必须关注一些测试页面:

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()++?感谢。

3 个答案:

答案 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;