定義我所用的開發工具在Chrome 13,當我輸入這行:全球定位在Chrome 13
var location = "Hello";
按Enter,改變了頁面,並給了我一個404錯誤。地址欄現在有Hello
追加到最後的地址。
我發誓,我輸入了完全相同的線路了Chrome在過去,而不是有同樣的問題。我認爲位置在window.location
。
有什麼改變,或者我以前從未注意到這一點?
定義我所用的開發工具在Chrome 13,當我輸入這行:全球定位在Chrome 13
var location = "Hello";
按Enter,改變了頁面,並給了我一個404錯誤。地址欄現在有Hello
追加到最後的地址。
我發誓,我輸入了完全相同的線路了Chrome在過去,而不是有同樣的問題。我認爲位置在window.location
。
有什麼改變,或者我以前從未注意到這一點?
開發人員工具中的上下文爲window
是非常正常的。輸入this
並查看說的是什麼。這可能是window
。
因此,當你鍵入:
var location = "Hello";
您正在試圖重新定義已經存在的全球範圍內的變量。瀏覽器中的全局範圍是window
對象。因此,全球範圍內的location
與window.location
相同。
正在試圖重新定義已經存在(通過使用var
)的對象不是在JavaScript錯誤。它只是忽略了var
聲明並完成了一項任務。並且,將位置對象的字符串分配給新的網頁。
Chrome可能已經更改了其範圍規則。我不清楚在控制檯上的var
應該被視爲窗口範圍還是某個神祕的控制檯範圍。
如果你想創建一個變量命名的位置,你應該使用一個立即函數創建一個安全的範圍內,例如。例如。
(function(){
var location = "hello"; // safe
})();
現在想想看,這很明顯。我在這裏輸入了,而事實上,它是窗口對象。我很驚訝,我以前從未注意到這一點。 – Jonathan