Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解modenizer包含的函数_Javascript_Operators_Modernizr - Fatal编程技术网

Javascript 理解modenizer包含的函数

Javascript 理解modenizer包含的函数,javascript,operators,modernizr,Javascript,Operators,Modernizr,我刚刚浏览了modenizer的代码,发现了以下函数: function contains(str, substr) { return !!~('' + str).indexOf(substr); } modenizer有很多这样的小功能用于小测试。现在来问我的问题,我确实明白双等是用来将所有东西转换成布尔值的,但什么是~也用于什么是 '' 在strfor 我在上看到了一些问题,可以解决类似的问题,但不完全是这个问题。有人能在这个例子的上下文中解释一下这个函数中发生了什么。很好~

我刚刚浏览了modenizer的代码,发现了以下函数:

function contains(str, substr) {
    return !!~('' + str).indexOf(substr);
}
modenizer有很多这样的小功能用于小测试。现在来问我的问题,我确实明白双等是用来将所有东西转换成布尔值的,但什么是
~也用于什么是

''  
str
for


我在上看到了一些问题,可以解决类似的问题,但不完全是这个问题。有人能在这个例子的上下文中解释一下这个函数中发生了什么。

很好~x不是按位的。对于-1,按位不是0。所以!!~在布尔表示法中表示“不是-1”。

~(''+str)

  • :转换为布尔值(
    true/false
  • ~
    :一元运算符通过反转操作数中的所有位进行操作。反转其操作数的位

    按位记下任何数字x产生-(x+1)。

  • 类型转换将str转换为
    字符串

  • 运算符首先将
    str
    强制转换为
    string
    ,然后反转所有二进制位,然后返回布尔结果

    示例

    contains('abcd', 'd');
    
    1. If str is not string then it is converted to string
    
        true + '' // "true"
        1 + ''    // "1"
    
    2. `indexOf`
        The index of `substr` is returned.
    
    3. `~`
        The bitwise NOT of 3 which is -(3 + 1) = -4
    
    4. `!!`
        !!-4 = true
    
    
    true will be returned.
    

    谢天谢地!在最后一个请求中,您能给出几个
    ~
    的例子吗。谢谢you@Tenali_raman请参阅MDN@Tenali_raman,我已逐步解释了
    如何包含
    工作