全局变量name与window对象的name属性

在全局作用域未声明name变量的情况下,在控制台打印 ‘name’ 输出一个空字符串而不是undefined。而打印其它未声明的常规变量则会正常输出 undefined。

console.log(name);
// > ''

console.log(test);
// > undefined

window对象默认存在name属性,可设置或返回存放窗口的名称的一个字符串。

该名称是在 open() 方法创建窗口时指定的或者使用一个 <frame> 、<iframe>标签的 name 属性指定的。

窗口的名称可以用作一个 <a> 或者 <form> 标记的 target 属性的值。以这种方式使用 target 属性声明了超链接文档或表单提交结果应该显示于指定的窗口或框架中。

如果未对窗口或框架命名,执行 console.log(name) 或 console.log(window.name) 就会得到一个空字符串。

其实,不仅仅是打印 ‘name’ 时会出现这种情况,因为window对象本身存在许多默认属性,在开发中最好不要使用将这些属性声明为全局变量,否则有可能会出现一些意想不到的事情。

此条目发表在JavaScript分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复