javascript按位运算符
发布网友
发布时间:2022-04-24 02:07
我来回答
共2个回答
懂视网
时间:2022-05-17 12:28
那么,对于typeof var!==”number”的类型来说,进行运算时,会尝试转化成32位整形数据,如果无法转换成整形数据,就转换为NaN;
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;
首先,如果一个数据在尝试转换为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名…;
对于~~运算符,同理,它也可以表示为:
代码如下:
var testData=2.1;
var testResult=(typeof testData==="number"&&!isNaN(testData)&&testData!==Infinity)?(testData>0)?Math.floor(testData):Math.ceil(testData):0;
同样采用上下舍入的方式来理解;
热心网友
时间:2022-05-17 09:36
| 是或运算符
或运算的基本原理是:两个数相对应的位都为1或其中一个为1则结果为1,如果都是0则结果为0。
比如:
4 的各位为 0100
8 的各位为 1000
那么 4|8 就是 1100
转换为10进制就是12
通俗点来理解,或运算可以使两种状态进行叠加,比如
0100 代表勇敢
1000 代表机智
那么经过或运算的结果1100就代表既勇敢又机智
如果1100再和0100进行或运算,结果仍然是1100,因为1100已经包含0100这个状态了
不知你听明白了没有?