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