为什么JavaScript split()会使用不同的变量名生成不同的输出?

以下是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

为什么两个输出(注释输出:ONE和输出: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"]
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...