js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析
其实是一种利用符号进行的类型转换,转换成数字类型
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0
~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1
JS在位运算上用了更简便的一种方法来实现这中运算,那么它的实现原理大致上可以这样理解:
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?-Math.floor(testData)-1:-Math.ceil(testData)-1:-1;
一个数据如果不能转换为32位二进制表示,就转换为NaN;继而转为-1;比如~{}/~NaN ==-1;
又比如~function(){return 100;}->-1;
在Jquery里面,有用到比如if(!~this.className.indexOf(str)){ //do some thing…..};这里,对于this.className.indexOf(str)的返回值,要么大于-1,要么就是等于-1;在其等于-1的时候,~-1===0;然后,!~-1===true;那么就可以得出this不包含str这个class名…;
对于~~运算符,同理,它也可以表示为:
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData):Math.ceil(testData):0;
js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析相关推荐
- js中三个判断的应用——if else、三元运算符、switch case
js中三个判断的应用--if else.三元运算符.switch case 区别 if .else if.else 是最常用的判断,可以解决js中的所有的判断需求 三元运算符应用于简单的if else ...
- node.js中模块_在Node.js中需要模块:您需要知道的一切
node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...
- js中“||”和“”的高级用法 js,与或运算符 || 妙用
网络上找到的一篇关于逻辑与和逻辑或的文章,详细记录一下. http://www.jb51.net/article/21339.htm 例1:用于赋值 &&:从左往右依次判断,当当前值为 ...
- three.js中坐标系转换以及camera的position、lookAt与up属性理解
为了更好的理解camera的position.lookAt与up属性,文章最开始我们先来阐述three.js的坐标系转换的概念. 1.监听event的事件获得屏幕坐标 文章的最开始首先讨论在哪里进行点 ...
- js 中 java 代码_在js中嵌套java代码
jsp中有时候在js中操作某些java后台传递过来的数据逻辑比较复杂,比如list内容的遍历,可以直接在页面上添加java脚本来执行内容,代码如下: //在js中插入java代码操作 //取出java ...
- 后端响应的字符串“true”,在JS中不等于“true”?JS中if(“true“ == “true“),结果为false?
答案:JS中if("true" == "true") 结果当然为true.只是因为响应的数据最后带有回车"\n",if("true ...
- Js读取Cookie中指定字段的值,Js中读取某个Cookie,Js中根据Cookie的key得到对应的value,Js正则表达式匹配指定的Cookie
Js中想要读取Cookie中指定字段的值,可以遍历Cookie根据指定Key提取Cookie,或者使用正则表达式匹配Cookie,代码如下: /*** @description: 遍历cookie得到 ...
- js 中添加php数组元素,JS数组添加元素方法总结
本篇文章介绍了如何向JS数组中添加新的元素,分别使用不同的几种方法去给JS数组添加元素,数组在JS中是很常用的数据类型之一,而对数组进行操作这是我们必会的基础之一. 下面我们来看一下有哪些方法可以对J ...
- JS中闭包的应用自定义JS模块2
/*** 自定义模块2*/ (function (window) {//私有的数据var msg = 'atguigu'var names = ['I', 'Love', 'you']//操作数据的函 ...
最新文章
- 牛客练习赛9 B - 珂朵莉的值域连续段
- ES6新特性之class类的基本语法
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
- 《剑指offer》-整数中1出现的次数
- ORACLE中表死锁的处理
- nonlocal python3_Python 中的 global、nonlocal 辨析
- linux脚本ipddr.sh 是什么,MTK DDR调试
- java中什么是匿名接口_Java中接口(interface)和匿名类
- JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理
- php 三大魔术方法,PHP魔术方法
- python sort sorted_Python sort和sorted
- Shiro在线刷新权限
- Altium Designer 入门及环境配置
- 回车enter键的js
- 【PPT 资源下载】甲骨文数据库大会精彩主题分享
- Shell - timeout命令
- html制作象棋教程入门教程,photoshop图层样式制作象棋棋子教程
- 安卓开发记账本app
- 2019初三计算机考试模拟,初三学生特别关注:2019年中考模拟试卷正式发布!五月份练起来...
- HMI-45-【控制台】控制台代码迁移