js中 ~~这个符号是什么意思

今天在看到一个关于JS 对象数组Array根据对象object key的值排序sort 代码是这样的
函数定义:
function keysrt(key,desc) {
return function(a,b){
return desc ? ~~(a[key] < b[key]) : ~~(a[key] > b[key]);
}
}

使用:
var ary=[{id:1,name:"b"},{id:2,name:"b"}];
ary.sort(keysrt('name',true));
ary.sort(keysrt('name',false));
ary.sort(keysrt('id',false));

代码我运行过没问题。但是不理解函数定义里那个~~什么意思,有知道的给解释一下吗?谢谢

~是js里的按位取反操作符,~~就是执行两次按位取反,其实就是保持原值,但是注意虽然是原值,但是对布尔型变量执行这个操作,会转化成相应的数值型变量,也就是 ~~true === 1,~~false === 0。
你的例子里就是利用了这个特性,keystr方法要求返回值是数值型,但是a[key] < b[key]得到的结果是true或false,布尔型,所以用~~处理一下,这种方法速度快,代价远小于写表达式或者判断条件。
温馨提示:内容为网友见解,仅供参考
无其他回答

js中 ~~这个符号是什么意思
~是js里的按位取反操作符,~~就是执行两次按位取反,其实就是保持原值,但是注意虽然是原值,但是对布尔型变量执行这个操作,会转化成相应的数值型变量,也就是 ~~true === 1,~~false === 0。你的例子里就是利用了这个特性,keystr方法要求返回值是数值型,但是a[key] < b[key]得到的结果...

js ~~符号是什么意思??
~是按位取反运算,~~是取反两次。~~的作用是去掉小数部分,因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数。例如:按位取反 如 unsigned char a=1;二进制为 00000001 a=~a;现在二进制为11111110

js中的 +=符号是啥意思
~是按位取反运算,~~是取反两次。~~的作用是去掉小数部分,因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数。例如:按位取反 如 unsigned char a=1;二进制为 00000001 a=~a;现在二进制为11111110

js中在变量名前加"~"这个符号什么意思呢?例如:~EXT_PROPS
~ 是 位运算 NOT,按位取反 var iNum1 = 25;\/\/25 等于 00000000000000000000000000011001 var iNum2 = ~iNum1;\/\/转换为 11111111111111111111111111100110 alert(iNum2);\/\/输出 "-26"相当于是对数值求负后减1 25 -> -25 -> -26

js中得~~是什么意思
其实是一种利用符号进行的类型转换,转换成数字类型 ~~true == 1 ~~false == 0 ~~"" == 0 ~~[] == 0 ~~undefined ==0 ~~!undefined == 1 ~~null == 0 ~~!null == 1

js中-->符号
这是两个操作符的组合 首先前面的--表是将m的值减1 后面的>是大于判断符意思是m是否大于0 在执行完这次判断后会将m的值减1 如果是if(--m>0){d.dateArray[j]=null;continue} 这样写,也就是--写在m的前面就是先将m的值减1后再判断m是否>0了 所以写在前面和后面是有区别的 ...

JS里的++、--、+=、*=分别表示什么啊,还有这类的符号吗,可以详细一点吗...
++和--这是算数运算符。比如 x=5 ,y=++x,y=6 比如 x=5 ,y=--x,y=4+= 是赋值运算符。比如 x+=y,相当于x=x+y = 比如 x*=y,相当于x=x*y 类似的符号:还有 1、除法 (\/)除法运算符的结果是操作数的商 ,左操作数是被除数,右操作数是除数。2、求余 (%)求余运算...

运算符号有哪些js
javascript 中的运算符是按照一个特定的顺序来求值的。这个顺序就是运算符的优先级。下表按从最高到最低的优先级列出了这些运算符。处于同一行中的运算符按从左至右的顺序求值。运算符 描述 . [] () 字段访问、数组下标以及函数调用 ++ -- - ~ ! typeof new void delete 一元运算符、返回数据...

js基础——运算符
JavaScript基础中,运算符是数据运算的核心工具,它们是参与运算的符号(操作符),而参与运算的数据则是"元"(操作数)。运算符的使用取决于其作用,可以是单个或多个,处理不同的运算场景。按操作数的数量,运算符大致可分为算术运算符(如+、-、*、\/、%等,适用于数学计算,需要注意精度问题、除数...

js中的<!-- -->有什么作用?
这是js提供的注释符号,除了html中的<!-- -->之外还有c语言中的\/* *\/和c++中的\/\/ 如果说为什么要提供这么多注释符号,据我所知是因为,一些早期的浏览器不支持<SCRIPT>标签,会把<SCRIPT>之间的代码按HTML文本进行显示。为了避免这种情况的发生,直接把<!--放在紧跟<SCRIPT>标签的下一行,把\/\/...

相似回答