給一個元素設置 id 屬性,它會在 js 中創建全局變量,如
<div class="test" @click="test" id="idTest">test</div>test() {console.log('idTest:', window.idTest)
}.test {height: 50px;width: 200px;background-color: aliceblue;
}
點擊 test
即?window.idTest =?document.getElementById("idTest")
HTML5規范文檔中指出:如果一個元素符合下面兩條規則中的任一條,則window對象中必須要有與之對應的一個屬性,屬性值就是這個對象.
- 如果一個元素擁有ID屬性,那么ID屬性的屬性值就會成為window對象的屬性名.
- 如果一個元素擁有name屬性,那么name屬性的屬性值就會成為window對象的屬性名.但這個元素的標簽名必須是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一個
意思就是上面這些標簽設置name 時也會在 window 對象上創建變量,但我試 a 標簽不會,其它標簽會,但是這種會覆蓋全局變量,還會可能導致全局變量命名沖突,占用內存等問題,所以慎用啊。