Javascript中的内联`++`不起作用

4
惊讶地发现这样的一行代码:
$('#TextBox').val(parseInt($('#TextBox').val())++ );

无法工作!

我做了一些测试,得出结论:内联的 ++ 不起作用(在整个JavaScript中?还是仅在我的示例中?)。

这里有一个三段代码的测试,似乎 ++ 对于变量是可以的,但对于内联则不行。

因此,在Javascript中我们不能使用内联 ++


6
“++”不是这样运作的。为什么不用“+1”呢? - J. Holmes
1
函数调用中没有 ++ ... - DerWaldschrat
@32bitkid:没问题,只是在这里测试东西。 - Akheloes
如果你想要一些混乱的 + 符号组合在一起,可以像这样写:1 + + "5"; // 6 - Paul S.
显然,您没有研究过++的含义。请详细告诉我们您实际期望发生什么。 - Lightness Races in Orbit
显示剩余3条评论
3个回答

8

这与jQuery无关。++会增加一个变量的值,但你试图增加一个函数调用的返回值。


是的。++ 是一个仅适用于变量和对象属性的运算符。 - Andre Pena
那么为什么 parseInt($('#TextBox').val()) + 1 能够正常工作呢? - Akheloes
2
@Gloserio ++ 执行的是一个 赋值 操作,你在这里改变了一个属性/变量的值吗?这就是为什么 1++ 不起作用而 1+1 起作用的原因。请参阅后缀增量运算符的语言规范 - Benjamin Gruenbaum
@Gloserio — + 不会改变一个变量的值。 - Quentin
1
我认为“真正”的原因是+1会产生一个更大的值,而++则是后置递增(返回当前值)。 - Steven Lu
天啊!我要去自杀然后告诉你... :( - Akheloes

4

问题:x++是什么意思?

答案:x++表示取出变量x的值,记为n,然后将x设置为n+1,并返回n

问题:为什么对于非变量会失败?

答案:我们来试试一个简单的例子,比如说3,看看哪里出了问题。

  1. 取出3,记为n,所以n=3

  2. 3设为n+1,即3 = 3 + 1,结果为3 = 4,这毫无意义!因此如果无法进行这一步骤,则不能使用++运算符。


哈哈,如果我告诉你我知道这个,我甚至可以让你更生气 :p - Akheloes

0

++ 只能作用于变量,不能直接作用于数字。

var c = parseInt($('#TextBox').val());
$('#TextBox').val( ++c );

将顺序更改为

var x = 0;

var result = x++;

result // 0

var x = 0;

var result = ++x;

result // 1

然后它将在检索值之前评估 ++


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接