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