说明
这种东西一般都是出现在面试题上面,实际生产环境中很少用,因为性能不见得更优越可读性还更差。
本文属于转载,但是对排版做了优化。
思路一
(function()
{
var a = 10, b = 2;
a = a + b;
b = a - b;
a = a - b;
console.log('a:', a, 'b:', b);
})();
思路二
(function()
{
var a = 10, b = 2;
a = a ^ b;
b = b ^ a;
a = a ^ b;
console.log('a:', a, 'b:', b);
})();
思路三
(function()
{
var a = 10, b = 2;
a = [a, b];
b = a[0];
a = a[1];
console.log('a:', a, 'b:', b);
})();
//简化一下:
(function()
{
var a = 10, b = 2;
a = [b, b=a][0];
console.log('a:', a, 'b:', b);
})();
思路四
(function()
{
var a = 10, b = 2;
a = {a : b, b : a};
b = a.b;
a = a.a;
console.log('a:', a, 'b:', b);
})();
思路五
(function()
{
var a = 10, b = 2;
a = (function()
{
try { return b; }
finally { b = a; }
})();
console.log('a:', a, 'b:', b);
})();
思路六
(function()
{
var a = 10, b = 2;
eval("a="+b+";b="+a);
console.log('a:', a, 'b:', b);
})();
思路七
(function()
{
var a = 10, b = 2;
a = b + (b = a) * 0;
console.log('a:', a, 'b:', b);
})();