2016-11-09 55 views
-2

我很難遵循這個概念。該功能的要點是需要2個參數,並測試target參數是否參數str的末尾。JavaScript中使用(-'string'.length)做什麼

所以end('Sebastion', 'ion')將返回trueend('Sebastion', 'eon')將返回false

我發現這個解決方案,有什麼不明白的-target.length在做什麼,如何匹配到目標正在測試的參數。

我對JavaScript非常陌生,所以如果有人對這種工作方式有什麼瞭解,那將會很棒。

function end(str, target) { 
    return (str.substr(-target.length) === target); 
} 
+2

閱讀[文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr)總是有用的。 – Teemu

+0

你試過了嗎?你讀過文檔了嗎? –

+0

我讀過文檔,否則我不會爲一般的「溢出來」。由於像你的評論問題。在閱讀了解釋後,我仍然不明白它在做什麼。 – Derrick

回答

0

讓我們來評估str.substr(-target.length)

rules of precedence之後,我們首先需要評估-target.length

再次遵循優先規則,我們首先評估target.length。我們這樣做是因爲「成員訪問」接近優先級表的頂部。在您的示例中,這將評估爲3

否定,得到-3

好了,現在我們需要評估的str.substr(-3)結果:

中的JavaScript功能substr有這個在此documentation on MDN

開始:位置處開始提取字符。如果給出負數,則將其視爲strLength + start,其中strLength是字符串的長度(例如,如果start爲-3,則將其視爲strLength - 3)。

如果start爲負數,則substr ()將它用作字符串末尾的字符索引。如果start是負數,並且abs(start)大於字符串的長度,substr()使用0作爲起始索引。注意:所描述的對起始參數負值的處理不受Microsoft JScript支持。

所以它需要源字符串的最後3個字符。

+0

這很有道理。謝謝。 – Derrick