Open LuckyWinty opened 4 years ago
针对的是Number,或者类型可以转换成数字的变量类型
function swap(a, b) {
a = a + b;
b = a - b;
a = a - b;
}
通过算术运算过程中的技巧,可以巧妙地将两个值进行互换。但是,有个缺点就是变量数据溢出。因为JavaScript能存储数字的精度范围是 -2^53 到 2^53。所以,加法运算,会存在溢出的问题。
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1 此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变.
a = a ^ b;
b = a ^ b;
a = a ^ b;
[a, b] = [b, a];
更多参考:
ES6结构,应该是最好的吧
你借助了变量a和b
你借助了变量a和b
我竟无言以对
function swap(a, b) { //TODO }