以下是Chrome开发者控制台的一些代码和输出
情况1:
var myarr = document.location.hostname.split("."); //typed undefined //output myarr[0] //typed "ptamz" //output: ONE
案例2:
var name = document.location.hostname.split("."); //typed undefined //output name[0] //typed "p" //output: TWO
截图:
解决方法
name
is a property of window
.看起来当您尝试将该属性设置为数组时,键将以逗号连接(调用
toString
on an array的结果).所以你实际上是将window.name属性设置为document.location.hostname.split(“.”)的每个元素的串联,用逗号分隔.
这是我的Chrome控制台的屏幕截图,演示了会发生什么:
名称[0]然后导致p的原因是您可以使用方括号访问字符串的字符:
name = "hello,world"; console.log(name[0]); //"h"
编辑
正如其他人所提到的,这只是全球范围内的情况.您可以在后代范围内声明名为name的变量.虽然显然在这种情况下省略var关键字仍然会导致您访问window.name:
function example() { var name = ["hello","world"]; console.log(name); //["hello","world"] }