2015-10-14 61 views
2

我今天剛碰到一點困惑,"string".indexOf('');總是返回0,但是我期望-1(對於false);相反,"string".lastIndexOf('');總是返回6爲什麼''(空串)滲透所有的琴絃?

lastIndexOf比較容易理解,因爲字符串是6個字母("string".length,是零索引回報5),但我沒有看到的ECMAScript規範(5.16.0)任何地方,描述爲什麼''將被視爲一個詞/字符邊界

究竟是在這裏發生了什麼?

+0

是的,''''被視爲一個字/字符邊界。 – PitaJ

+0

'indexOf()'返回找到的匹配的_first_匹配項,如果根本找不到字符串,則返回'-1'_only_。 – Nit

+0

''''被視爲... ummm ...空字符串。在另一個字符串中第一次出現空字符串就在它的開頭。 – 2015-10-14 18:38:54

回答

6

細則中指出:

返回最小的可能整數ķ不小於開始這樣 是ķ + SEARCHLEN不超過len個更大,併爲所有 非負整數j小於searchLen,字符 位置ķ + Ĵ小號相同位置處j處的字符 字符串searchstr的;但如果沒有這樣的整數,則返回值 值-1。

這個條件在位置0完成,因爲vacuous truth:因爲你正在尋找一個空字符串中,任何你能想到的會保持每一個角色,因爲它沒有任何字符。

更正式地說,對於任何聲明P,如果S = ∅,P(x)成立∀ x ∈ S