slice()、 substring()和substr()的區(qū)別

方法 參數(shù) 返回值
slice(start, end) start(必需) -起始位置; end(可選)-結(jié)束位置,若未指定,則默認(rèn)到末尾所有元素 返回 [start,end)之間的元素
substring(start, end) start(必需) -起始位置;end(可選)-結(jié)束位置,若未指定,則默認(rèn)到末尾所有元素 返回 [start,end)之間的元素
substr(start, length) start(必需)-起始位置;length(可選)-所截取的元素的個(gè)數(shù),若未指定,則默認(rèn)到末尾 返回[start, start+length)之間的元素

當(dāng)傳的參數(shù)都為正數(shù)的時(shí)候,substring和slice沒(méi)有區(qū)別。當(dāng)參數(shù)為負(fù)數(shù)時(shí),三個(gè)函數(shù)的行為不盡相同。

  • slice() - 將傳入的負(fù)參數(shù)與字符串長(zhǎng)度相加;
  • substring() - 把所有的負(fù)值置為0;
  • substr() - 將負(fù)的第一個(gè)參數(shù)與字符串長(zhǎng)度相加,負(fù)的第二個(gè)參數(shù)置為0。
例子

1. 參數(shù)為正數(shù)

    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

2 參數(shù)為負(fù)數(shù)

  var str = 'hello world';
  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
  console.log(str.substr(3, -4));// ""(空字符串)

以上示例的元算過(guò)程如下:

  • slice(-3) => slice(8)
  • substring(-3) => substring(0)
  • substr(-3) => substr(8)
  • slice(3, -4) => slice(3, 7)
  • substring(3, -4) => substring(3, 0) =>substring(0, 3)
  • substr(3, -4) => substr(3, 0)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容