题目:
var name;
console.log(name);
console.log(typeof name);
按照正常思路来说,只是声明了name变量并未赋值,所以按常理来说应该输出:
undefined
"undefined"
但是运行结果为
究其原因,是因为window存在一个叫name的属性
此属性为空,实际上,开发者定义的所有变量,都会成为window的属性,如果变量没有被赋值,则该变量不会覆盖window上的同名属性。
那么如果把题目改成这样呢?
var name = undefined;
console.log(name);
console.log(typeof name);
直接上结果:
是不是又大吃一惊。。。
打开window对象看一下:
字符串类型的undefined,也就是说,不论给name赋啥值(null和object也不例外,分别被转换为 name:"null" 和name: "[object Object]"),都会被转换为字符串类型,所以,在开发中最好避开对name的直接使用