Skip to content

Instantly share code, notes, and snippets.

@AJLoveChina
Created November 19, 2015 04:29
Show Gist options
  • Save AJLoveChina/a7506d18d8722bed3b40 to your computer and use it in GitHub Desktop.
Save AJLoveChina/a7506d18d8722bed3b40 to your computer and use it in GitHub Desktop.
关于异或
有时候我们可以用这样的方式交换变量
var a = 3, b = 4;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a + '--' + b); // 4--3 交换成功
但是, 这种方法有俩点需要注意 :
1. a 和 b要为整数(也就是int类型, 虽然js没有int类型, 所有数字都是以64位浮点数形式储存, 但只要你写的数字是整数就OK)
2. a, b 不可以相同 (并不是说值不能相同, 而是说不能 a与a进行这种运算, 经常会在交换数组的俩个数值时发生这种错误) ,例如 :
<script>
var m = 1, n = 2;
var arr = [1,2,3,4,5];
// 如果要交换数组下标为m, n的俩个元素, 一定要先判断m是否等于n, m不等于n才可以进行操作, 否则arr[m]最后会变为0
if (m !== n) {
arr[m] = arr[m] ^ arr[n];
arr[n] = arr[m] ^ arr[n];
arr[m] = arr[m] ^ arr[n];
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment