相同点:
都是用于返回一个字符串的子串
不同点
substring(start,end) :start是子字符串的开始位置,end是子字符串的结束位置;
var a = ' The Three Musketeers ';
a.substring(4, 9); // ' Three '
substr(start,end) :start是子字符串的开始位置,end是子字符串的长度;
var b = ' The Three Musketeers ';
b.substr(4, 9); // ' Three Mus'
slice(start,end) :start是子字符串的开始位置,end是子字符串的结束位置;
但如果 start 为***负***,将它作为 length + start处理,此处 length 为数组的长度。如果 end 为***负***,就将它作为 length + end 处理,此处 length 为数组的长度。如果省略 end ,那么 slice 方法将一直复制到 b 的结尾。如果 end 出现在 start 之前,不复制任何元素到新数组中。
slice可以对数组操作,substring不行;
var c = ' The Three Musketeers ';
c.slice(4, 9); // 'Three'
c.slice(-4,-2);// 'ee'
c.slice(-4);// 'eers'
c.slice(4,-2);// 'Three Musketee'
c.substring(4,-2);// 'The '