js中~~和^=分别代表什么,用处是什么?

先看个栗子:

~~false === 0  
~~true === 1
~~undefined === 0
~~!undefined === 1
~~null === 0
~~!null === 1  
~~"" === 0
~~!"" === 1

~是按位取反的意思,计算机里面处理二进制数据时候的非,~~就是再转回来,利用两个按位取反的符号,进行类型的转换,转换成数字符号。

而在计算机里面的^=是异或运算,相同取0,不同取1.

两个整数交换可以酱紫表示:

var  a = 10,b=20;
a ^= b; b^=a;a^=b;   

 将a = a ^= b; b = b^=a; a = a^=b;在js中类似于:

var a = 1,b = 2;
a = a + b;
b = a - b;
a = a - b;
a // 2
b //1

不过这种方法适用于任意两个数字类型的交换,无论是整数类型还是小数。

其次,交换两个变量,最简单的方式是:

var a = 2,b = 'Miya';
[a,b,] = [b,a,]
a // Miya
b //2

 这个是ES6中的数组的解构赋值,很方便的进行两个变量的交换。 

转载于:https://www.cnblogs.com/tangjiao/p/9131993.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值