一、参数含义上的区别。
第一个参数 | 第二个参数(可选) | |
slice() | 开始位置 | 需要返回的子字符串最后一个字符后面的位置 |
substr() | 开始位置 | 需要返回的字符个数 |
substring() | 开始位置 | 需要返回的子字符串最后一个字符后面的位置 |
例如:
var strValue = "javascript programing";
alert(strValue.slice(3)); //"ascript programing"
alert(strValue.substring(3)); //"ascript programing"
alert(strValue.substr(3)); //"ascript programing"
alert(strValue.slice(3,13)); //"ascript pr"
alert(strValue.substring(3,13)); //"ascript pr"
alert(strValue.substr(3,13)); //"ascript progr"
二、处理负值参数时的区别。
参数的含义不变,只不过参数为负值时,3个子字符串函数会对负值参数进行不同的处理。
第一个参数 | 第二个参数(可选) | 备注 | |
Slice() | 将负值与字符串的长度相加 | 将负值与字符串的长度相加 | |
Substr() | 将负值与字符串的长度相加 | 将负值变为0 | |
substring() | 将负值变为0 | 将负值变为0 |
负值处理后,该函数会将较 小的数作为开始位置,较大 的数作为结束位置 |
例如:
var strValue = "javascript programing"; alert(strValue.slice(-3)); => alert(strValue.slice(18)); //"ing"
alert(strValue.substring(-3)); => alert(strValue.substring(0)); //"javascript programing"
alert(strValue.substr(-3)); => alert(strValue.substr(18)); //"ing"
alert(strValue.slice(3,-13)); => alert(strValue.slice(3,8)); //"ascri"
alert(strValue.substring(3,-13)); => alert(strValue.substring(0,3)); //"jav"
alert(strValue.substr(3,-13)); => alert(strValue.substr(3,0)); //""