时间:2021-05-26
那么,对于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;
同样采用上下舍入的方式来理解;
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
二元运算符下表显示可重载的运算符的列表。可重新定义的二进制运算符运算符名称,逗号!=不相等%取模%=取模/赋值&按位“与”&&逻辑“与”&=按位“与”/赋值*乘
C语言中的运算符是告诉编译程序执行特定算术或逻辑操作的符号。按着用途,C语言的运算符主要分为四大类:算术运算符、关系运算符、逻辑运算符、按位运算符。除此之外,还
复合赋值运算符运算符符号加法+=按位与&=按位或|=按位异或^=除法/=左移=减法-=无符号右移>>>=要求版本信息条件(三目)运算符(?:)根据条件执行两个语
大多数语言都提供了按位运算符,按位运算符在c,c++等语言中运用广泛,而在JS,AS等脚本语言中则没有太多的应用例子,有时候,适当的使用按位运算符会取得很好的效
VBScript运算符VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。运算符优先级当表达式包含多个运算符时,将按预定顺序