作者tyf99 (呵呵)
看板Ajax
標題[ js ] Javascript 的連續運算式
時間Wed Feb 1 16:37:23 2012
之前有寫一個小程式,結果一直錯誤,抓不到 bug
後來才發現是 js 本身的特性問題
簡單的測試
var a=1, b=2;
a+=b+=a+=b;
alert(a+','+b);
會發現 js 跑出來最後答案是 (a,b)=(6,5),Chrome/Firefox/Safari 答案一致
但是過去我學過的所有程式語言,都告訴我答案應該是 (8,5)
在傳統的程式語言裡,assignment statement 一定是等右邊的結果出來後,
左邊的變數才用新值接下去運算。
但在 js 裡,一開始的 a 已經給了 value=1
不知道這是 js 本身的規範,還是瀏覽器的 js engine 為了加速所做的妥協?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.211.197.209
1F:推 musie:alert會有問題..請用console 這問題已經算是老梗了 02/01 16:41
2F:→ alpe:C&C++版 Rule 8. 02/01 16:49
3F:→ tyf99:原來是老梗... 沒遇過就沒有特別去查 02/01 17:07
4F:→ tomin:console.log(a+','+b);結果一樣是(6,5)啊 02/02 02:07