为什么不能在JS"名称"中调用变量?
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);
Run Code Online (Sandbox Code Playgroud)
当我在控制台中的新选项卡中键入"name"时,它返回一个空字符串?
我用的是Chrome.
因为window.name是window对象的神奇属性,并且只能保存字符串(任何对象,包括数组,都被强制转换为原始类型,并且变得类似"[Object Object]").全局范围中定义的变量将成为全局对象的属性,并且可能导致冲突.
您可以name在任何非全局范围内使用变量.简单的解决方法是将代码包装在立即调用的函数表达式(IIFE)中.
(function(){
var wrapper = document.createElement("div");
var name = document.createElement("div");
wrapper.appendChild(name); // workd
document.body.appendChild(wrapper);
}());
Run Code Online (Sandbox Code Playgroud)