问答详情
源自:7-21 选定元素slice()

substring()与str.slice()区别

既然substring()不可以用负数来表示,那么str.slice()是不是完全可以代替substring()?

提问者:Hot_shit 2016-04-01 17:14

个回答

  • nadirvishun
    2017-01-05 22:29:00

    substring与slice的参数是起始值到结束值,类似区间;而substr的参数,是起始值和长度(与php的一致但功能没php多)。

    substring与slice的两个参数当为正数时基本一致,除了substring会比较两个参数大小,小的排在前面。

    substring的第一个参数为负数时,则自动认为是0,而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。

    slice的第一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。

    substr的以一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数是,由于表示的是长度,那绝对也是返回空字符串了。

  • 慕无忌4210378
    2016-04-01 20:38:03

    当接收的参数是负数时,slice会将它字符串的长度与对应的负数相加,结果作为参数;substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;substring则干脆将负参数都直接转换为0。测试代码如下:

    var test = 'hello world';

       document.write(test.slice(-3)+'<br>');         //rld
      document.write(test.substring(-3)+'<br>');     //hello world
        document.write(test.substr(-3)+'<br>');        //rld

         document.write(test.slice(3,-4)+'<br>');       //lo w
        document.write(test.substring(1,0)+'<br>');   //hel
         document.write(test.substr(3,-4)+'<br>');    


  • 按照自己的节奏前行
    2016-04-01 19:42:54

    不行哦!

    substring()返回的是字符串;

    str.slice()返回的是数组哦!