首先這三個(gè)函數(shù)的出現(xiàn)而來(lái)的目的就是為了獲取字符串的字符丢早。
相同點(diǎn)就是都有有兩個(gè)參數(shù)
slice(BeginSlice, EndSlice);
substring(indexStart, indexEnd);
substr(index, length);
讓它們發(fā)生更本變化的就是傳入的那兩個(gè)參數(shù)。通過(guò)how to use them去對(duì)比發(fā)現(xiàn)的。
一開(kāi)始自己肯定要先明白每一個(gè)概念的含義以及使用方法怨酝,如果看了就繼續(xù)往下一個(gè)函數(shù)看傀缩,收獲我想也不大。
看看相同點(diǎn)
//如果開(kāi)始索引與結(jié)束索引一樣會(huì)返回""
var str = 'Mozilla';
str.slice(1,1);//""
str.substring(1,1);//這兩個(gè)函數(shù)返回的結(jié)果是 ""
//如果結(jié)束索引被忽略了农猬,那么獲取字符串將進(jìn)行到字符串的結(jié)尾
str.slice(0);
str.substring(0);
//截取字符串不包括結(jié)束索引的值
str.slice(0,2);//'Mo' 沒(méi)有取到'z'的值
str.substring(0,2);//'Mo'
substring的不同
//substring如果參數(shù)小于0或者是NaN,當(dāng)作0來(lái)處理赡艰,可以試試看
str.substring(-1,2);//'Mo'
str.substring(NaN,2);//'Mo'
str.substring(0,2);//'Mo'
//如果indexStart > indexEnd,那么兩者會(huì)交換位置
str.substring(10,2) == str.substring(2,10);//true
slice的不同
//如果beginSlice索引為負(fù)數(shù)斤葱,那么會(huì)被處理為str.length + beginSlice
str.slice(-2,-1);//等一下行代碼
str.slice(str.length-2, str.length-1);
//如果begin > end瞄摊,不管是正數(shù)還是負(fù)數(shù)都返回為""
str.slice(5,2);//""
str.slice(-2,-5);//""
substr
//第一Index為負(fù)數(shù)時(shí),處理為str.length + Index
str.substr(-4,5);
str.length(str.length-4,5);
//第一個(gè)索引為NaN時(shí)當(dāng)作零來(lái)處理
str.substr(NaN,5) == str.substr(0,5);
//當(dāng)?shù)诙€(gè)參數(shù)為負(fù)數(shù)或者NaN或者零時(shí)苦掘,返回""
str.substr(2,0);//""
str.substr(2,NaN);//""
str.substr(2,-1);//""
真的好難寫(xiě)一篇技術(shù)文章呀,我的天吶沒(méi)掌握全不敢寫(xiě)出來(lái)呀楔壤。真的一點(diǎn)邏輯也沒(méi)有感覺(jué)