element-ui的switch组件源码有这样一个判断

if (!~[this.activeValue, this.inactiveValue].indexOf(this.value)) {this.$emit('input', this.inactiveValue);
}

这个用法比较新颖,因为默认的写法都是 ['xx', 'yy'].indexOf(who) >= 0

先看一下~的含义是 非按位取反运算符,总结的规律是 -(x+1)   。

复习一些二进制知识:

原码
原码表示法最高位为符号位,该位为0表示正数,1表示负数。其余位表示数的绝对值。
反码
对于一个带符号的数来说,正数的反码与其原码相同;负数的反码为其原码除符号位以外的各位按位取反。反码常用来做求补码过程中的中间形式。
补码
正数的补码与其原码和反码相同;负数的补码是对它的原码除符号位以外各位取反,并在末位加1而得到,即为该数的补码加1。计算机内的数一般以补码形式表示。在补码中用(-128)D代替了(-0)D,注意:(-128)D没有相对应的原码和反码,(-128)D = (1000,0000)B。
求补运算
求补运算不考虑符号位,对它的原码各位取反,并在末位加1而得到。对一个数进行求补运算所得的是该数相反数的补码。

总结:所以~['x'].indexOf('x') 永远返回<0的数字,等于0说明不存在。!0又会转为false,所以!~['x'].indexOf('x')可以判断是否存在于数组。不用去写>=0了。

其他用法:

~~    转换成数字并且把小数点去掉    效率比Math.floor高

javascript中的!~是什么意思相关推荐

  1. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  2. JavaScript中,this的绑定规则

    对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点. 比如下面的代码,this 指向就有三种方式. 在<你不知道的 JavaScript>一书中,我总算比较清 ...

  3. Javascript中undefined,NaN等特殊比较

    以下内容转自: http://blog.csdn.net/hongweigg/article/details/38090093 1.问题:在Javascript中,typeof(undefined) ...

  4. Javascript中二进制数据处理方法

    Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

  5. JavaScript 中的有限状态机

    http://www.ibm.com/developerworks/cn/web/wa-finitemach/ JavaScript 中的有限状态机 Page navigation 系列文章 有限状态 ...

  6. 在Javascript中使用面向对象的编程

    by Mike Koss March 26th, 2003 这是一篇,我个人认为最好的,Javascript面向对象编程的文章.翻译不好的地方,还望大家指正,谢谢. 如果您需要,可以访问下面的地址取得 ...

  7. 取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...

    统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用.URL指定资源位置和检索资源的机制(http,ftp,mailto). 例如,这是此博客文章的URL: 通常,您需要访问URL的特 ...

  8. 在javascript中判断类型

    String 一个字符串始终是一个字符串,所以这一块是很容易.除非使用new(new String)调用,否则typeof将返回"object".所以也要包含那些可以使用的字符串i ...

  9. JavaScript中几个重要的知识点(1) ---- 面向对象

    JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象.面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 ...

  10. javascript中实例方法与类方法的区别

    在javascript中,类有静态属性和实例属性之分,也有静态方法和实例方法之分 类属性(静态属性):通过类直接访问,不需要声明类的实例来访问 类方法(静态方法):通过类直接访问,不需要声明类的实例来 ...

最新文章

  1. Larbin简介,及其在Ubuntu10.04下的编译安装
  2. VirtualBox虚拟机导出导入实践
  3. 安卓开发之路-浅识Android
  4. 从云计算到大数据华胜天成的国际化之路
  5. Javascript——说说js的调试
  6. 本土链雷达网_走向本土设计
  7. ntko web firefox跨浏览器插件_Firefox火狐浏览器插件全部失效解决方法
  8. create-react-app创建的项目npm run build之后静态文件找不到
  9. 富斯FS_I6六通道遥控器玩转APM飞控失控保护
  10. html原生js请求
  11. 仿迅雷播放器教程 -- 媒体播放器对比 (2)
  12. 80psi等于多少kpa_psikpa换算(kpa bar 换算)
  13. kubectl源码分析之drain
  14. oracle的经典总结
  15. vue.js 的学习
  16. Scikit-plot画图
  17. 修复 Rancher 2.5.x 内部证书过期导致无法启动的顽疾
  18. 请求转发和重定向的区别以及什么时候使用
  19. 关于路由的这10个问题,网络工程师们应该掌握
  20. 零基础教会你用github创建个人博客网站

热门文章

  1. conda install 卡住
  2. 智能家居运用3D建模和三维模型的作用
  3. Win32汇编--图形操作--GDI原理
  4. C语言 计算e及e的次方的近似值
  5. 学历对一个程序员重要吗?是找工作还是考研?
  6. 童心制物布局国内STEAM 教育:5月将发布2款新品,未来同时聚焦B端和C端...
  7. 全膝关节置换术的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 微信jsapi 调用分享接口(完整版)
  9. QQ音乐的随机播放 是真的随机吗?
  10. Infected Tree(递归/树形)