1. 相同点
他们都接收两个参数 , 第二个参数都是可选的, 如果忽略, 返回从 第一个参数 的开始位置到字符串的结尾
slice 和 substring 接收的是 起始位置 和 结束位置(不包括结束位置),
substr 接收的则是 起始位置 和 所要返回的字符串长度 。
var str = 'helloworld';
alert(str.slice(4,7)); //owo
alert(str.substring(4,7)); //owo
alert(str.substr(4,7)); //oworld
2. 不同点
1) substring() 的两个参数要求是非负整数, 另外它是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
alert(str.substring(7,4)); //owo
若果一个参数是负数, 他会默认这个参数为 0
alert(str.substring(-5,4)); //hell
2) substr() 第一个参数可以是负数 , 如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
alert(str.substr(-1)); //d
alert(str.substr(-2,1)); //l
3) slice() 上面的两个方法只能截取字符串, slice()可以截取数组和字符串
slice() 和 substring() 的区别, slice() 不会以较小的参数作为初始位置, 而是默认第一个参数作为初始位置
alert(str.slice(7,4)); //"" ,空字符
alert(str.slice(7)); //rld
slice() 两个参数可以为负数, 都是表示从末尾开始算起的位置
alert(str.slice(-1)); //d
alert(str.slice(-2,-1)); //l
alert(str.slice(-2,-2)); //""
slice() 可以截取数组, 用法和上面一样
[1,2,3,4].slice(-2,-1) // [3]
[1,2,3,4].slice(1,-1) // [2,3]
[1,2,3,4].slice(1) // [2,3,4]