您好,欢迎访问一九零五行业门户网

JS按位非(~)运算符与~~运算符的理解分析_javascript技巧

那么,对于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整形数据时,结果-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;
同样采用上下舍入的方式来理解;
其它类似信息

推荐信息