題目:bash
var name;
console.log(name);
console.log(typeof name);複製代碼
按照正常思路來講,只是聲明瞭name變量並未賦值,因此按常理來講應該輸出:spa
undefined
"undefined"複製代碼
可是運行結果爲code
究其緣由,是由於window存在一個叫name的屬性cdn
此屬性爲空,實際上,開發者定義的全部變量,都會成爲window的屬性,若是變量沒有被賦值,則該變量不會覆蓋window上的同名屬性。對象
那麼若是把題目改爲這樣呢?blog
var name = undefined;
console.log(name);
console.log(typeof name);複製代碼
直接上結果:開發
是否是又大吃一驚。。。字符串
打開window對象看一下:string
字符串類型的undefined,也就是說,不論給name賦啥值(null和object也不例外,分別被轉換爲 name:"null" 和name: "[object Object]"),都會被轉換爲字符串類型,因此,在開發中最好避開對name的直接使用it