吐槽Javascript系列一:slice()、substr()和 substring()
實不相瞞,對於字串中的slice()、substr()和 substring()這三個方法,我自己很長一段時間都是理不清的,每次用都得查一下文件,因為他們長得實在是太像了。
特性
我們先來溫習一下,他們的特性如下:
-
這三個方法都會
返回
被操作字串的一個子字串
,而且也都接受一或兩個引數 -
這三個方法都
不會改變
原字串 - 第一個引數指定子字串的開始位置,第二個引數(在指定的情況下)表示子字串到哪裡結束。具體來說,slice()和substring()的第二個引數指定的是子字串最後一個字元後面的位置,而substr()的第二個引數指定的則是返回的字元個數
我們來看幾個簡單的例子:
const str = 'hello world' console.log(str.slice(3)) // lo world console.log(str.substring(3)) // lo world console.log(str.substr(3)) // lo world console.log(str.slice(3, 7)) // lo w console.log(str.substring(3, 7)) // lo w console.log(str.substr(3, 7)) // lo worl
吐槽
substring():slice()同學,我們乾的是一樣的活,我感覺你有點多餘,並且你的名字在陣列的方法中也出現了,讓人用起來暈暈的。
slice():我們在傳入負值的時候,是不一樣的。
console.log(str.slice(-3)) // rld console.log(str.substring(-3)) // hello world
substring():誰沒事傳負值啊,你見過有人傳入負值的嗎?混亂!
slice():...