作者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