2012-08-09 69 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 
相關問題