相关疑难解决方法(0)

当代数在表达式之前时,代字号会做什么?

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() )
           ? 'value'
           : 'innerHTML'
Run Code Online (Sandbox Code Playgroud)

我在一个答案中看到了它,我以前从未见过它.

这是什么意思?

javascript syntax bit-manipulation

182
推荐指数
5
解决办法
5万
查看次数

怎么!!〜(不是不是波浪形/爆炸声波)改变'包含/包含'数组方法调用的结果?

如果您在这里阅读jQuery inArray页面上的注释,那么有一个有趣的声明:

!!~jQuery.inArray(elm, arr) 
Run Code Online (Sandbox Code Playgroud)

现在,我相信双感叹号会将结果转换为类型boolean,值为true.我不明白的是,~在所有这些中使用了tilde()运算符是什么?

var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }
Run Code Online (Sandbox Code Playgroud)

重构if声明:

if (!!~jQuery.inArray("one", arr)) { alert("Found"); }
Run Code Online (Sandbox Code Playgroud)

分解:

jQuery.inArray("one", arr)     // 0
~jQuery.inArray("one", arr)    // -1 (why?)
!~jQuery.inArray("one", arr)   // false
!!~jQuery.inArray("one", arr)  // true
Run Code Online (Sandbox Code Playgroud)

我也注意到,如果我把波浪号放在前面,结果是-2.

~!!~jQuery.inArray("one", arr) // -2
Run Code Online (Sandbox Code Playgroud)

我不明白这里代字号的目的.有人可以解释一下或指向我的资源吗?

javascript jquery operators bitwise-operators

93
推荐指数
10
解决办法
2万
查看次数