JavaScript - 为什么我不能调用变量" name"?

时间:2014-12-12 15:01:19

标签: javascript syntax

为什么不能在JS“name”中调用变量?

var wrapper = document.createElement("div");
var name = document.createElement("div");

wrapper.appendChild(name); // TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

document.body.appendChild(wrapper);

当我在控制台的新选项卡中输入“name”时,它会返回一个空字符串吗?

我使用Chrome。

2 个答案:

答案 0 :(得分:6)

因为window.namewindow对象的魔法属性,并且只能保存字符串(任何对象,包括数组,都被强制转换为原始类型,变成类似"[Object Object]"的东西)。全局范围中定义的变量将成为全局对象的属性,并且可能导致冲突。

您可以在任何非全局范围内使用变量name。简单的解决方法是将代码包装在立即调用的函数表达式(IIFE)中。

(function(){

    var wrapper = document.createElement("div");

    var name = document.createElement("div");


    wrapper.appendChild(name); // workd


    document.body.appendChild(wrapper);

}());

答案 1 :(得分:3)

'名称'是依赖于实现的JavaScript对象,方法或属性的预定义名称,您应该避免将其用作变量的名称,尽管它不是保留字并且可能在某些浏览器中有效