substring()与str.slice()区别
既然substring()不可以用负数来表示,那么str.slice()是不是完全可以代替substring()?
既然substring()不可以用负数来表示,那么str.slice()是不是完全可以代替substring()?
2016-04-01
substring与slice的参数是起始值到结束值,类似区间;而substr的参数,是起始值和长度(与php的一致但功能没php多)。
substring与slice的两个参数当为正数时基本一致,除了substring会比较两个参数大小,小的排在前面。
substring的第一个参数为负数时,则自动认为是0,而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。
slice的第一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数时,由于表示的是结束值,那绝对返回时空字符串了。
substr的以一个参数为负数时,则会将字符串长度与此负数相加(和倒着数一致),而第二个参数为负数是,由于表示的是长度,那绝对也是返回空字符串了。
当接收的参数是负数时,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>');
举报