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

相关文章
相关标签/搜索