可以說我有一個封閉幾個變量,像這樣:分配給document.getElementById可在閉包之外訪問的變量?
(function() {
var foo = document.getElementById('foo'),
bar = 'baz';
}());
此外,假設我有FOO的ID的HTML元素:
<h1 id = 'foo'>foo</h1>
我然後嘗試訪問每個封閉外的封閉變量。
第一條:
console.log(bar); //logs a reference error 'bar is not defined'
然後富:
console.log(foo.innerHTML) // logs 'foo' instead of throwing reference error. Why?
爲什麼foo是仍然是封閉的外部訪問?
聽到的是的jsfiddle是否有幫助:http://jsfiddle.net/YmDmL/
如果您調用'foo'變量*任何其他*,這將顯示問題不是變量'泄漏',而是來自(早期/非常早的IE)的保留,其中具有'id在全球範圍內可以通過其「id」的名稱立即訪問;這裏是[演示](http://jsfiddle.net/davidThomas/YmDmL/1/),請注意我已經刪除/刪除了'display'賦值。 –
因爲瀏覽器將具有id的元素作爲變量添加到全局對象中。 – elclanrs
@DavidThomas:這似乎是票。我沒有意識到這種行爲。我假設這是另一個在HTML標記中避免無關id屬性的原因。如果你可以在評論中發表你的評論,我會很樂意接受它作爲正確的答案。 – 123