区别:
substr第2参数是从第1参数后第几位,也就是Length
如:

s='abcdefg';
s.substr(0,3)
//  "abc"
s.substr(2,3)
//  "cde"

substring第2参数是实际字符串的第几位,但是!
substring也是以两个参数中较小一个作为起始位置较大的参数作为结束位置

如:

s.substring(2,3)
//  "c"
s.substring(2,5)
//  "cde"

//  注意:有坑
s.substring(5,2)
//  "cde"

slice和substring很像,但是区别在于负数
slice的负数从尾部开始算,我们正常人类逻辑,但
substring的负数干脆直接转为0!!
如:

s.slice(0,3)
//  "abc"
s.slice(2,3)
//  "c"
s.slice(2,-2)  // 从开始2,到结尾2
//  "cde"

s.substring(2,-2) //  负数直接干成0,然后从0作为最小,2作为最大
//  "ab"

s.slice(-2,2)
//  ""
s.substring(-2,2)  //  负数直接干成0,然后从0作为最小,2作为最大
//  "ab"

s.substr(-2,3) // substr的第二参数是从第一开始数,所以根本不能为负数!
//  "fg"

总结

substr和slice区别
substr在于第二参数,也就是结束地址,substr结束地址是从第一参数后面开始数第几个!
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!

substr和substring的区别
substr第二参数的结束位置从第一参数开始数第几个,但是不能为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!

slice和substring区别
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!第二参数可为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!不可为负数!

完全总结

substring 参数负数变0,且哪个小,就用哪个做起点,哪个大,就用做终点!
substr 第二参数不能为负数,因为从第一参后开始数
slice 第二参数可以是负数,他的第二参数是绝对地址

添加新评论