由於gdoron指出,[b] [b = a,0]如何在a和b之間交換?
var a = "a";
var b = "b";
a = [b][b = a,0];
將交換a
和b
,雖然它看上去有點哈克,它引發了我的好奇,我在它的工作原理很好奇。這對我沒有任何意義。
由於gdoron指出,[b] [b = a,0]如何在a和b之間交換?
var a = "a";
var b = "b";
a = [b][b = a,0];
將交換a
和b
,雖然它看上去有點哈克,它引發了我的好奇,我在它的工作原理很好奇。這對我沒有任何意義。
var a = "a";
var b = "b";
a = [b][b = a, 0];
讓我們最後一行到打碎:
[b] // Puts b in an array - a safe place for the swap.
[b = a] // Assign a in b
[b = a,0] // Assign a in b and return the later expression - 0 with the comma operator.
所以最後是a =[b][0]
- 的[b]
陣列中的第一個對象=>b
分配給a
閱讀@am不是我在這個問題上的意見:
When is the comma operator useful?
這是他的代碼......
所以當'b'被放入數組中時,它是安全的嗎? – 2012-03-25 22:01:23
@Derek。當'b = a'時它不會丟失 – gdoron 2012-03-25 22:02:30
這可能有助於(或阻礙)認爲它的語義上等價的λ建設方面(在這裏,參數c
取元素0的地方):
a = (function(c) { b = a; return c; })(b);
_「有點哈克」_ ???很多hacky ... :-) – gdoron 2012-03-25 21:59:27
相關:[交換兩個參數值有什麼更好的方法?](http://stackoverflow.com/questions/8482402/whats-a-better-way-to-swap-雙參數值) – 2012-03-25 22:05:30
對Godron的其他答案發表評論並要求澄清您的原始問題是否更有意義? – 2012-03-25 22:36:51