window.name的那些事

題目: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

相關文章
相關標籤/搜索