1

这将在以后需要:elementStr = 'hello'.

所以我正在开发一个 javascript 应用程序。在我的一个函数中,我有以下 if 语句:

if (elementStr.indexOf('#') !== 0) {
        //true
    } 

但我不喜欢!==它对我来说不好看的部分。所以我尝试了这个:

if (!elementStr.indexOf('#')) {
        //false
    } 

但 indexOf() 不会返回未定义但它总是返回一个数字。因此,第一个 if 语句返回 true,因为elementStr字符串的第一个位置没有“#”。但是第二个 if 语句返回 false,因为 indexOf 返回 -1 并且这不是“未定义”,但我们当然希望它像第一个示例一样返回 true。因为我们不想改变声明,我们只是想让它看起来更好。所以偶然我这样做了:

if (!~elementStr.indexOf('#')) {
    //true
} 

你猜怎么着,它奏效了。我试图找到关于那个标志的东西,它在 javascript 中的作用。但我什么也找不到。我正在玩它,我得到了以下结果:

if (!~~elementStr.indexOf('#')) {
    //false
} 

if (!~~~elementStr.indexOf('#')) {
    //true
} 

您可以继续添加〜,并且语句布尔值将一直更改。

现在有人可以解释一下它在这个例子中的作用,如果我可以安全地使用那个标志吗?

4

1 回答 1

3

位运算符

〜一个

对每个位执行 NOT 运算符。

例子:

9(基数 10)= 00000000000000000000000000001001(基数 2)

〜9(基数10)= 1111111111111111111111111110110(基数2)= -10(基数10)

于 2013-04-28T12:34:06.690 回答