關於substr、substring和slice方法區別的文章,網上搜到了許多,文章內容也基本一致。而後,我將其中一篇文章中的代碼挪到本地進行了測試,發現測試結果和原文中的有些出入。
我更相信自己親自驗證過後的代碼,隨後小記下來,供以後查閱。
substr 復制代碼 代碼如下:
document.write("|" + str.substr(0,5) + "|" + "<br />");
document.write("|" + str.substr(0) + "|" + "<br />");
document.write("|" + str.substr(5,1) + "|" + "<br />");
document.write("|" + str.substr(-5,2) + "|" + "<br />");
document.write("|" + str.substr(-2,-5) + "|" + "<br />");
打印效果
|12345|
|123456|
|6|
IE: |12| Chrome: |23|
substring
復制代碼 代碼如下:
document.write("|" + str.substring(0,5) + "|" + "<br />");
document.write("|" + str.substring(0) + "|" + "<br />");
document.write("|" + str.substring(5,1) + "|" + "<br />");
document.write("|" + str.substring(-5,2) + "|" + "<br />");
document.write("|" + str.substring(-2,-5) + "|" + "<br />");
document.write("|" + str.substring(2,-5) + "|" + "<br />");
打印效果
|12345|
|123456|
|2345|
|12|
|12|
slice 復制代碼 代碼如下:
document.write("|" + str.slice(0,5) + "|" + "<br />");
document.write("|" + str.slice(0) + "|" + "<br />");
document.write("|" + str.slice(5,1) + "|" + "<br />");
document.write("|" + str.slice(-5,2) + "|" + "<br />");
document.write("|" + str.slice(-2,-5) + "|" + "<br />");
document.write("|" + str.slice(2,-5) + "|" + "<br />");
打印效果
|12345|
|123456|
|2|
||
如果你預想的結果和打印效果完全一致,那你的基本功一定不賴。如果多少有點猶豫或者結果出乎你的意料,那我的文章多少也有點用處了。
總結
substr
該方法的arg2和其它兩個方法的arg2壓根就代表不同意義,所以單獨揪出來。
當arg1<0時,不同浏覽器的結果不同。IE 直接將arg1改成0, Chrome 下標讀取方式由原來的從左往右讀改成從右往左讀
substring和slice
(1)arg2 > arg1,即參數2大於參數1時
substring:自動顛倒位置,數值大的在arg2位置上,數值小的在arg1位置上
slice:返回空字符串
(2)對負數的處理
substring:將數值為負數的參數轉換為0
slice:將數值為負數的參數轉換為(字符串長度-參數數值)