2015-02-09 36 views
1

我正在阅读关于JavaScript中Tilde运算符的文章。我看到了一个例子表明,我们可以使用〜通过串如下搜索:使用Tilde(〜)和search()来搜索字符串

var str = 'posterous'; 
if (str.search('t') >= 0) { 
// character t found 
} 
else{ 
// not found 
} 

随着〜:

var str = 'posterous'; 

if (!~str.search('t')) { 
// character 't' not found branch 
} 
else{ 
// found branch 
} 

我的问题是,它是如何工作的?

回答

2

Joe Zim's blog explains what it is

代字号(〜)是一元运算符,是以表达在其右侧 执行它这个小算法(其中N是表达于波浪线的 右侧): -(N+1)

除了0所有的数字都被认为truthy

String.indexOfString.search回报-1如果没有发现~-10这是falsey

+0

你说:“除0所有的数字都是truthy(也就是说,他们评估为真)”。但是当我们提醒(( - 4 == true))时,它会提示错误。所以为什么? – 2015-02-09 16:13:25

+0

@AmirJalilifard它不会工作。它将比较一个数字和真正的数字,这些数字将被输出到'1',所以它会变成'-4 == 1',这是错误的。他们被认为是真实的。像'if(-4){alert(“Success”);}' – 2015-02-09 16:16:50

+0

我知道了。所以除0以外的所有数字都被认为是真实的。他们只是认为真实不真实!谢谢! – 2015-02-09 16:19:53