url = location.href + '';
在 uri.js 中看到这么一句,有点疑惑,为什么不直接 location.href 而再 concat 一下。location.href 应总是返回字符串才对?
location.href
是否已经存在一些情况,某些浏览器的某些版本返回的并不是字符串,从而做了以上处理?
光阴似箭催人老,日月如移越少年。
更新:首先必須明確的一點是,類庫的寫作與一般程序是不同的。一般程序只需確保標準變化不大的時候能正常工作,類庫還需要確保使用該類庫的程序不會因爲類庫而無法工作。
我們用類庫是爲了方便,是爲了提高程序的健壯程度,而不是引入新的 bug。
正文:
沒錯,location.href 应总是返回字符串,這是常識。常識來自經驗,而經驗受到侷限性的緣故,並不總是可靠。
簡單地說,什麼時候出了新標準,假如 location.href 不是 String 而是 URIString 類型,那麼原先的假設全部泡湯。
String
URIString
這是一個習慣問題。這樣做是爲了確保無論新舊瀏覽器,只要支持 location.href,並且可以隱式轉換爲 String 類型,就不會出錯。
而不是說,所有我見過的瀏覽器都沒錯啊。那你沒見過的呢?
作爲類庫作者,健壯纔是最重要的。
更新:首先必須明確的一點是,類庫的寫作與一般程序是不同的。一般程序只需確保標準變化不大的時候能正常工作,類庫還需要確保使用該類庫的程序不會因爲類庫而無法工作。
我們用類庫是爲了方便,是爲了提高程序的健壯程度,而不是引入新的 bug。
正文:
沒錯,
location.href
应总是返回字符串,這是常識。常識來自經驗,而經驗受到侷限性的緣故,並不總是可靠。簡單地說,什麼時候出了新標準,假如
location.href
不是String
而是URIString
類型,那麼原先的假設全部泡湯。這是一個習慣問題。這樣做是爲了確保無論新舊瀏覽器,只要支持
location.href
,並且可以隱式轉換爲String
類型,就不會出錯。而不是說,所有我見過的瀏覽器都沒錯啊。那你沒見過的呢?
作爲類庫作者,健壯纔是最重要的。