js中~~和^=分别代表什么,用处是什么?
先看个栗子:
~~false === 0 ~~true === 1 ~~undefined === 0 ~~!undefined === 1 ~~null === 0 ~~!null === 1
~~"" === 0
~~!"" === 1
~是按位取反的意思,计算机里面处理二进制数据时候的非,~~就是再转回来,利用两个按位取反的符号,进行类型的转换,转换成数字符号。
而在计算机里面的^=是异或运算,相同取0,不同取1.
两个整数交换可以酱紫表示:
1 2 | var a = 10,b=20; a ^= b; b^=a;a^=b; |
将a = a ^= b; b = b^=a; a = a^=b;在js中类似于:
1 2 3 4 5 6 | var a = 1,b = 2; a = a + b; b = a - b; a = a - b; a // 2 b //1 |
不过这种方法适用于任意两个数字类型的交换,无论是整数类型还是小数。
其次,交换两个变量,最简单的方式是:
1 2 3 4 | var a = 2,b = 'Miya' ; [a,b,] = [b,a,] a // Miya b //2 |
这个是ES6中的数组的解构赋值,很方便的进行两个变量的交换。
分类:
一寸光阴
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架