JavaScript中的“!~”是什么意思
what's the " !~" mean in javascript
(function () {
var names = [];
return function (name) {
addName(name);
}
function addName(name) {
if (!~names.indexOf(name))//
names.push(name);
console.log(names);// ["linkFly"]
}
}())('linkFly');
有时候我看到这个逻辑,是什么意思?谢谢~
tl;dr
当在数组中找不到元素时,indexOf
返回 -1。因此,if
语句正在检查是否在names
中找到name
。 !~-1 ==> true
更长版本:
波浪号 ( ~
( 运算符 (按位 NOT( 产生 a 的倒置值(又名 one's 补码(。 例如,~-1 === 0
.请注意,0 == false
和!0 === true
。 当在数组中找不到元素时,indexOf
返回 -1。因此,我们可以使用 !~-1 === true
来确定indexOf
是否无法在names
中找到name
(即返回 -1(。
我的意见:
如您所见,使用这些没有注释的混淆或"聪明"技术确实会让读者感到困惑。如果您确实喜欢这些技术,请为了读者而记录您的代码行正在做什么!
!(逻辑上不是(如果其单个操作数可以转换为 true,则返回 false;否则,返回 true。
对于除 -1 之外的所有整数操作数,在为 ! 运算符应用 ~ 运算符后,net 操作数本质上是真实的,从而导致 FALSE。-1 很特殊,因为 ~(-1( 给出 0,这在 JavaScript 中是假的。添加 !运算符给了我们唯一的 TRUE。
相关文章:
- @@(“at at”)在ES6 JavaScript中是什么意思
- minimy javascript是什么意思?Backbone.js
- var w = q||问2;这个表达式是什么意思
- 函数(i,val)在javascript中是什么意思
- 问号在这段代码中是什么意思
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- ||{}在javascript中是什么意思
- “转义字符串”在Regex中是什么意思?(Javascript)
- 这个代码是什么意思(history.replaceState和history.pushstate)
- :: 是什么意思
- 这是什么意思?getData([renderData]);
- MDN文档中关于弄清楚XUL元素的段落是什么意思:“如何将覆盖扩展转换为无重启”
- require('file_path')后面的后缀(模块)在javascript文件中是什么意思
- Twitter Bootstrap的Tab插件中“data-api”是什么意思
- 箭头函数 '() => {}' 在 Javascript 中是什么意思?
- 在这种情况下,“foo[x]”是什么意思?
- 在 http 请求中添加事件侦听器 ( request.on ) 是什么意思?而笏就是它的用途
- 这种格式是什么意思 T00:00:00.000Z
- 这行是什么意思“ operator.indexOf(btnVal) > -1”
- JQuery:这段代码是什么意思