首先轮洋,他們都接收兩個(gè)參數(shù)制市,slice和substring接收的是起始位置和結(jié)束位置(不包括結(jié)束位置),而substr接收的則是起始位置和所要返回的字符串長度弊予。直接看下面例子:
var test = 'hello world';
alert(test.slice(4,7)); //o w
alert(test.substring(4,7)); //o w
alert(test.substr(4,7)); //o world
這里有個(gè)需要注意的地方就是:substring是以兩個(gè)參數(shù)中較小一個(gè)作為起始位置祥楣,較大的參數(shù)作為結(jié)束位置。
如:
alert(test.substring(7,4));//o w
接著汉柒,當(dāng)接收的參數(shù)是負(fù)數(shù)時(shí)误褪,slice會(huì)將它字符串的長度與對(duì)應(yīng)的負(fù)數(shù)相加,結(jié)果作為參數(shù);substr則僅僅是將第一個(gè)參數(shù)與字符串長度相加后的結(jié)果作為第一個(gè)參數(shù);substring則干脆將負(fù)參數(shù)都直接轉(zhuǎn)換為0碾褂。測(cè)試代碼如下:
var test = 'hello world';
alert(test.slice(-3)); //rld
alert(test.substring(-3)); //hello world
alert(test.substr(-3)); //rld
alert(test.slice(3,-4)); //lo w
alert(test.substring(3,-4)); //hel
alert(test.substr(3,-4)); //空字符串
1 注意:IE對(duì)substr接收負(fù)值的處理有錯(cuò)兽间,它會(huì)返回原始字符