2016-11-23 315 views
0

這可能是一個奇怪的問題,因爲我沒有具體的例子。我正在試圖學習JavaScript,並在回顧一些材料的同時開始考慮是否可以遞增/遞減少於一(1)。 換句話說,如果有一種情況需要通過其他「1」來增加變量。例如。將變量i遞增0.5,而不是1,for (var i = 0, i < 10.5, i++/2) {... 正如我所說的,我沒有具體的例子或理由需要這樣做。我只是好奇,如果:JavaScript:劃分前綴和後綴增量/減量

  1. 它是合法的JavaScript?
  2. 這是可能出現在真實場景中的東西嗎?
  3. 如果是這樣,這是做到這一點的正確方法,或者是否有不同/更好的方法來增加/減少一個分數?

非常感謝您的回覆!

不作爲問題,同樣的問題在經歷How to increment number by 0.01 in javascript using a loop?

+0

的可能的複製(http://stackoverflow.com/questions/19290628/how-to-increment-number-by- 0-01-in-javascript-using-a-loop) – Mahi

回答

0

i++/2是有效的語法,但它不會做你期望的。

相反,表達i += 0.50.5增加i並返回新值:

var i = 1 
 
var x = (i += 0.5) 
 

 
console.log(i) // 1.5 
 
console.log(x) // 1.5

+=被稱爲addition assignment operator。請注意,表達式將返回增加的值,而不是更改前的值i。換句話說,它的行爲類似於++i,而不是i++

+0

謝謝蒂莫!只要我看到加法賦值運算符'+ =',我就知道你在說什麼了。這使得看到寫什麼和寫什麼更有意義。此外,感謝您解釋何時會增加,例如'++ i'與'i ++'相比。我仍然不習慣賦值運算符。我理解他們,但是我忘了他們,當我看到一個人時,我必須暫停一下,記住他們是如何運作的。 –

0

爲了增加蒂莫的答案,我不建議在循環中使用分數增加的,因爲它可以導致舍入誤差:

for (var i = 0; i <= 1; i += 0.1) { 
    console.log(i); 
} 

// 0 
// 0.1 
// 0.2 
// 0.30000000000000004 
// 0.4 
// 0.5 
// 0.6 
// 0.7 
// 0.7999999999999999 
// 0.8999999999999999 
// 0.9999999999999999 

相反,你可以使用整數遞增,然後縮放值在所需的範圍:[?如何通過0.01在javascript使用循環遞增數]

for (var i = 0; i <= 10; i++) { 
    console.log(i/10); 
} 

// 0 
// 0.1 
// 0.2 
// 0.3 
// 0.4 
// 0.5 
// 0.6 
// 0.7 
// 0.8 
// 0.9 
// 1