js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析
来源:互联网 发布:php有用吗 编辑:程序博客网 时间:2024/04/29 15:10
其实是一种利用符号进行的类型转换,转换成数字类型
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0
~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1
~~true == 1
~~false == 0
~~"" == 0
~~[] == 0
~~undefined ==0
~~!undefined == 1
~~null == 0
~~!null == 1
按位非运算符,简单的理解就是改变运算数的符号并减去1,当然,这是只是简单的理解能转换成number类型的数据
那么,对于typeof var!==”number”的类型来说,进行运算时,会尝试转化成32位整形数据,如果无法转换成整形数据,就转换为NaN;
JS在位运算上用了更简便的一种方法来实现这中运算,那么它的实现原理大致上可以这样理解:
JS在位运算上用了更简便的一种方法来实现这中运算,那么它的实现原理大致上可以这样理解:
var testData=-2.9;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?-Math.floor(testData)-1:-Math.ceil(testData)-1:-1;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?-Math.floor(testData)-1:-Math.ceil(testData)-1:-1;
首先,如果一个数据在尝试转换为32整形数据时,结果<0,那么就需要对其上舍入,比如-2.9->-2,如果>0,对其下舍入,比如:2.6->2;
一个数据如果不能转换为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名…;
对于~~运算符,同理,它也可以表示为:
一个数据如果不能转换为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 testData=2.1;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData):Math.ceil(testData):0;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData):Math.ceil(testData):0;
0 0
- js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析
- JS按位非(~)运算符与~~运算符的理解分析
- js 运算符 |= 是什么意思
- JS中运算符i++与++i的详细分析
- js的&&与||运算符
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- 理解JS中 || 和 &&运算符
- js中运算符
- 3.JS中运算符与表达式
- js的运算符
- js中‘+’操作符与‘-’操作符的运算规则
- js的表达式,运算符,与优先级
- js中运算符的优先级
- js中运算符的优先级
- js中运算符的优先级
- js中运算符的优先级
- malloc实现原理
- 模拟退火算法原理及求解TSP问题的Java实现
- JD2016版首页改版前端总结(转载整理)
- 持久化对象的状态
- Redis基本命令
- js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析
- HDU2047 阿牛的EOF牛肉串
- CentOS 6.5安装Apache服务器后无法访问解决方法
- 大战tomcat
- C++模板详解
- chmod: prof_err.c: new permissions are r-xrwxrwx, not r-xr-xr-x 错误的解决方法
- Quartz的cron表达式
- 二叉树整理(三)
- Android状态栏微技巧,带你真正理解沉浸式模式