三者比较:
1.当只有一个参数时:
都是从此{开始索引}开始,直到字符串末尾
2.有两个参数时:
substring和slice,参数都是字符串的某个{开始索引}位置到某个{结束索引}位置(但{结束}位置的字符不包括在结果中)。
substr则是字符串的某个{开始索引}位置起,往后数length个长度的字符才结束;另外substr的length长度则不能小于1,否则返回空字符串
"hello!".slice(1,5) // "ello"
"hello!".substring(1,5)//"ello"
"hello!".substr(1,5)//"ello!"
"hello!".substr(0, -1) // "" 空字符串
接受负数为参:
slice可以接受“负数”,表示从字符串尾部开始计数; 而substring则把负数或其它无效的数,当作0。
"hello world!".slice(-6, -1) // "world"
"hello world!".substring("qwe", 5) // "hello"
substr的start也可接受负数,也表示从字符串尾部倒数start位开始截取,这点和slice很像
"hello world!".substr(-6, 5) // "world"