javascript - js 배열 루프는 어떻게 쉼표를 출력합니까? . .
習慣沉默
習慣沉默 2017-05-18 10:56:27
0
6
794

제목 그대로에요. . . 이유를 알아보세요

習慣沉默
習慣沉默

모든 응답(6)
Ty80

그 이유는 이름이 특별하고 값을 할당할 때 브라우저가 이를 문자열로 변환해야 하기 때문입니다. name特殊,在赋值的时候浏览器强制转成了string。

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

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

所以你用name1 으아아아

window에는 name 속성이 내장되어 있으므로 name을 전역적으로 선언하면 실제로 window.name에 값을 할당하게 됩니다. window.name 정보. 유사한 속성에는 상태 등이 포함됩니다. 🎜 🎜그래서 name1을 사용하면 문제가 없습니다. 실제로 비전역 환경에서 이름을 사용하거나 노드의 글로벌 환경에서 이름을 사용하는 경우에는 쉼표가 없습니다. 🎜
为情所困

Friends, name은 키워드입니다. 변수 이름을 지정하는 데 이것을 사용하지 마세요.
typeof를 입력하면 name은 string이고 name1은 object

라는 것을 알 수 있습니다.
给我你的怀抱

범위가 전역이므로 정의한 name 변수는 window.name과 동일합니다.
이것은 특수 전역 변수이며 이에 할당된 모든 값은 다음을 수행합니다. toString 연산
여기서 window.name에 배열을 지정하면 실제로 출력할 수 있으며 배열이 아니라 문자열임을 알 수 있습니다. br>그리고 그것은 정확히 문자열입니다. 루프를 사용하여 문자열을 탐색할 수 있으므로 쉼표가 출력됩니다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 으아아아

해결책: 전역 범위를 사용하지 말고 자체 실행 기능 레이어를 추가하세요🎜 으아아아 🎜또는 ES6let 키워드를 사용하여 변수를 정의하세요🎜
仅有的幸福

콘솔에 직접 출력하면 배열이 문자열로 처리되기 때문입니다

左手右手慢动作

해봤는데 변수 이름에 문제가 있는 것 같습니다. 이름이면 모든 문자가 출력됩니다. 구체적인 이유는 알 수 없습니다

曾经蜡笔没有小新

name은 js의 속성 이름이고 예약된 필드이기 때문에 for in이 이 필드를 반복하면 문자열로 처리되므로 문자열의 모든 문자가 출력됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!