2015-02-09 33 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