Javascript 为什么左侧的赋值无效?-2

Javascript 为什么左侧的赋值无效?-2,javascript,Javascript,之所以是2.0,是因为几个月前我发布了与bools相关的类似内容。试图理解为什么b1=!b2=真出错。我学习了函数等价性和从右到左的求值顺序 今天早上,我正在处理一些事情,我不明白为什么下面的代码会抛出类似的错误 功能测试(){ 返回1; } log((test())++)运算符将一个值添加到变量的值中,并将结果分配给变量。换句话说,foo++大约*等同于foo=foo+1。现在考虑你的代码: (test())++ test() (1)++ 或: 左边的(1),没有任何意义。不能为数字赋值

之所以是2.0,是因为几个月前我发布了与bools相关的类似内容。试图理解为什么
b1=!b2=真出错。我学习了函数等价性和从右到左的求值顺序

今天早上,我正在处理一些事情,我不明白为什么下面的代码会抛出类似的错误

功能测试(){
返回1;
}

log((test())++)运算符将一个值添加到变量的值中,并将结果分配给变量。换句话说,
foo++
大约*等同于
foo=foo+1
。现在考虑你的代码:

(test())++
test()

(1)++
或:

左边的
(1)
,没有任何意义。不能为数字赋值,因此会出现错误


*事实上,表达式
foo=foo+1
在添加后计算为
foo
的值,而
foo++
在添加前计算为
foo
的值<因此,code>foo++
实际上相当于
(oldFoo=foo,foo=foo+1,oldFoo)

与前面解释的原因相同。想象一下像
a++
这样的后缀增量相当于
a=a+1
。现在将上一个问题的答案应用到代码中,即
test()=test()+1
。或借助@MikeMcCaughan注释,
1=1+1
。没有意义是吗?可能是重复的
(1) = 1 + 1