在javascript中定义数组并将数组的名称保留为name

在javascript中定义数组并将数组的名称保留为name,javascript,arrays,Javascript,Arrays,在javascript中执行以下代码时: var name=["Pankaj","Kumar"] ; for( var i=0;i<name.length;i++) { console.log("Hello "+name[i]); } 但是javascript引擎输出: Hello P Hello a Hello n Hello k Hello a Hello j Hello , Hello K Hello u

在javascript中执行以下代码时:

var name=["Pankaj","Kumar"] ;

    for( var i=0;i<name.length;i++)
    {
        console.log("Hello "+name[i]);
    }
但是javascript引擎输出:

Hello P  
Hello a  
Hello n  
Hello k  
Hello a  
Hello j  
Hello ,  
Hello K  
Hello u  
Hello m  
Hello a  
Hello r  
如果我们将数组的名称更改为名称,那么它将根据预期输出:

Hello Pankaj  
Hello Kumar  
名称不是javascript保留关键字

您能告诉我这种行为的原因吗。

名称已作为
窗口附加到您所在的窗口。名称
因此,请避免使用它或使用
IIFE
如下,以避免污染全局命名空间

(函数(){
变量名称=[“Pankaj”,“Kumar”];

for(var i=0;i
name
肯定存在于全局范围内。
name
不是保留字,但它是全局的:您的解释是错误的。
window.name
与html属性无关。iLife是一个比“更改变量名”更具创造性的答案@M.Davis不,
window.name
是关于浏览上下文(即浏览器窗口/选项卡)的,与HTML无关。当然,iLife是正确的解决方案。@Bergi我的错,我看错了链接
Hello Pankaj  
Hello Kumar