为什么全局变量“名称”更改为字符串?

IT技术 javascript
2021-03-03 09:44:08

当我创建名为“name”的数组对象时,类型会自动更改为“String”,而不是“Array”。为什么?

<body>
  <script>
    console.log('---------------------------------');
    var name1 = ['abc', 'def'];
    console.log(name1);
    console.log(typeof name1);

    console.log('---------------------------------');
    var name = ['ghi', 'jkl'];
    console.log(name);
    console.log(typeof name);
  </script>    
</body>

结果在 Chrome(Mac):

---------------------------------
["abc", "def"]
object
---------------------------------
ghi,jkl
string   // <- Why?
1个回答

https://developer.mozilla.org/en-US/docs/Web/API/Window.name

它是一个字符串,因为window.name有一个目的。您正在设置窗口的名称。

@tadman:还有更多……虽然声明正确,但所有这些都可以作为局部变量名。
2021-04-29 09:44:08
@Luaan:不,JavaScript 中有全局变量。那些window成为属性是浏览器环境的特性。
2021-04-30 09:44:08
@bergi“本地”是指在函数上下文中,而不是在窗口中,对吗?
2021-05-01 09:44:08
换句话说,您没有设置全局变量,Javascript 中没有这样的东西。您正在做的是设置对象name字段window您真的想使用一些范围 - 将“变量”(和代码)包装在另一个对象或函数中。
2021-05-02 09:44:08
值得注意的是,有许多这样的准保留名称
2021-05-20 09:44:08