相同點:
- 都不會改變原始字符串
- 第一個參數都是指定字符串的開始位置
- 第二個參數不傳則將字符串的尾部做爲結束位置
不一樣點
- slice(startIndex,endIndex) 第一個參數指定字符串的開始位置,第二個參數指定字符串的結束位置
- substring(index0,index1)會將小的參數做爲開始位置,大的做爲結束位置
- substr(startIndex, num),第一個參數指定字符串的開始位置,第二個參數要返回的字符個數
- slice參數爲負值時,會將負值與字符串的長度相加獲得開始和結束位置
- substring參數爲負值時,會將全部的負值參數轉換成0
- substr方法將負的第一個參數加上字符串的長度獲得開始位置,將負的第二個參數轉換爲0
- tip 包前不包後
見例子:
var 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
console.log(str.slice(-3)) // rld
console.log(str.substring(-3)) // hello world
console.log(str.substr(-3)) // rld
console.log(str.slice(3, -4)) // lo w
console.log(str.substring(3,-4)) // hel 等同於 str.substring(3,0)); str.substring(0,3))
console.log(str.substr(3, -4)) // ''爲空字符