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