2012-08-09 41 views
3

如果我想增加一个值然后将它存储在另一个变量中,为什么不能在一行代码中执行?为什么这不会增加并存储值?

这工作

var count = 0; 
count++; 
var printer = count; 
alert(printer); //Prints 1 

但这并不

var count = 0; 
var printer = count++; 
alert(printer); //Prints 0 

回答

10

您正在使用后递增运算符。增量在赋值表达式完成后发生。

使用预递增的版本,而不是...

++count; 

或者使用+=操作...

count += 1; 
+2

+1,MDC总是比w3cschools好:) – Alfabravo 2012-08-09 14:16:40

5

你需要做的

var count = 0; 
var printer = ++count; 
alert(printer); 

W3Schools的页面的JavaScript Arithmetic Operators部分具有一个试试体面击穿我实验室。简而言之,如果您在变量之前执行递增/递减操作,则会在当前操作使用它之前进行。如果以后包含它,它会在当前操作之后发生。

+0

啊哈,所以这就是为什么!日Thnx。 – CalabiYau 2012-08-09 14:11:56

+1

w3schools?真? http://w3fools.com/ :-) – 2012-08-09 14:29:15

+0

@GarrettVlieger即使不好的地方也能找到好的信息 – 2012-08-09 14:38:37

0

++改变的结果取决于在你使用它的地方:

y = 0; 
x = y++; // post-increment 

相当于

y = 0; 
x = y; 
y = y + 1; 

x = ++y; // pre-increment 

相当于

y = 0; 
y = y + 1; 
x = y; 
1

它可以在一个线路来完成。

//Example 1 
var count = 0; 
count++; 
var printer = count; 
alert(printer); //Prints 1 

//Example 2 
var count2 = 0; 
var printer2 = count2++; 
alert(printer2); //Prints 0 
printer2 = count2++; 
alert(printer2); //Prints 1 

// Example 3, in one line 
var count2 = 0; 
var printer2 = count2 + 1; 
alert(printer2); //Prints 1 

// Example 4, in one line 
var count2 = 0; 
var printer2 = ++count2; 
alert(printer2); //Prints 1