javascript - js 数组循环 怎么会输出逗号来了呢。。。
習慣沉默
習慣沉默 2017-05-18 10:56:27
[JavaScript讨论组]

如题吧。。。求解为何

習慣沉默
習慣沉默

全部回复(6)
PHP中文网

原因是name特殊,在赋值的时候浏览器强制转成了string。

var name = [0, 1, 2]
console.log(name) // 输出 "0,1,2"

因为window有内置属性name,所以你在全局下声明name其实就是在给window.name赋值。关于window.name。类似的属性还有status

所以你用name1就没有问题。其实你在非全局下用name,或者在node环境的全局下用name也是没有逗号的。

为情所困

朋友,name是关键字,不要用这个命名变量,
你可以typeof一下,会发现name是string,name1是object

给我你的怀抱

因为你都作用域是全局的 所以你定义的 name 变量相当于 window.name
它是一个特殊的全局变量 任何值赋值给它都会进行 toString 操作
这里你将数组给 window.name 实际你可以输出看一下会发现它并不是数组而是字符串
而恰好字符串是可以用循环遍历的 所以输出了逗号

var name = [0, 1, 2]
console.log(name) // 0,1,2
console.log(typeof name === 'string') // true

解决方法:不使用全局作用域 加一层自执行函数

(function() {
  var name = [0, 1, 2]
  console.log(name) // [0, 1, 2]
  console.log(Object.prototype.toString.call(name)) // [object Array]
})()

或者使用 ES6let 关键字定义变量

仅有的幸福

因为在控制台直接输出把数组当成string了吧

ringa_lee

试了一下,好像是变量名的问题,只要是 name 就会输出每一个字符。具体原因不详

曾经蜡笔没有小新

因为name是js的属性名,属于保留字段,for in循坏该字段的时候,是将其作为String来处理的,因此String里的每个字符都会输出

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号