[ js ] Javascript 的連續運算式
之前有寫一個小程式,結果一直錯誤,抓不到 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
推
02/01 16:41, , 1F
02/01 16:41, 1F
→
02/01 16:49, , 2F
02/01 16:49, 2F
→
02/01 17:07, , 3F
02/01 17:07, 3F
→
02/02 02:07, , 4F
02/02 02:07, 4F
→
02/02 12:34, , 5F
02/02 12:34, 5F