(function () {
var names = [];
return function (name) {
addName(name);
}
function addName(name) {
if (!~names.indexOf(name))//
names.push(name);
console.log(names);// ["linkFly"]
}
}())('linkFly');
Run Code Online (Sandbox Code Playgroud)
有时我看到这个逻辑,这是什么意思?谢谢〜
usa*_*nds 15
TL;博士
indexOf当在数组中找不到元素时返回-1.因此,该if声明正在检查是否name找不到names.!~-1 ==> true
更长的版本:
tilde(~)运算符(按位NOT)产生a的反转值(也就是一个补码).[ 来源 ]例如,~-1 === 0.请注意0 == false和!0 === true.indexOf当在数组中找不到元素时返回-1.因此,我们可以使用!~-1 === true找出如果indexOf找不到name的names(即返回-1).
我的看法:
正如您所看到的,使用这些混淆或"聪明"技术而不发表评论可能会让读者感到困惑.如果您确实喜欢这些技巧,请记录您的代码行为读者所做的事情!
| 归档时间: |
|
| 查看次数: |
5559 次 |
| 最近记录: |