2017-03-05 52 views
-3

我期待這返回false,因爲第一個字符串是「通過/失敗」,並且傳遞到IndexOf的字符串是「Numerical Specification」。當比較兩個唯一字符串時,indexOf的結果爲true

我不理解這個函數的工作原理嗎?我認爲它檢查字符串A是否包含在字符串B中?

unexpected behavior

+1

indexOf()方法返回字符串中第一次出現指定值的位置。如果搜索的值永遠不會發生,則此方法返回-1。 – Smit

+0

它的確如你所描述的那樣,但是你不檢查-1的返回值,只是它真的,-1。另外,代碼是文本。像這樣對待它。無法搜索或複製圖像。 –

+1

Jack -1 is truthy,實際上每個非零值都是truthy(正數或負數),0是虛假:) – niceman

回答

1

你可能是指使用"".contains,它返回一個向上/向下布爾值,而不是匹配指數:

"abc".includes("b"); // == true; 
"abc".includes("x"); // == false; 

由於js中的-1是「truthy」,因此您的indexOf()用法不會作爲條件工作。

+1

我猜你的意思是'String.prototype.includes()'而不是包含作爲包含未定義。 – Gerrit0

+0

@ Gerrit0:愚蠢的污染的stackoverflow「rightofthedot」「全局」。 (它在控制檯中運行)我總是將這些方法名稱混合起來......固定。愚蠢的委託提名與其他網絡方法不同的東西,愚蠢的我不記得。謝謝;) – dandavis

+0

謝謝,包括作品一個治療! –

1

的的indexOf()方法返回在指定值的第一個出現的位置在一個string.This方法返回-1,如果要搜索的值決不會發生。

例如:

var str = "Hello world, welcome to the universe."; 
var n = str.indexOf("welcome"); //output 13 

Similiaryly:

var str = "Hello world"; 
    var n = str.indexOf("welcome"); //output -1 
+1

在這個答案的缺失部分:-1是一個真值:) – niceman