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