PHP中文网2017-05-18 10:58:27
그 이유는 이름
이 특별하고 값을 할당할 때 브라우저가 이를 문자열로 변환해야 하기 때문입니다. name
特殊,在赋值的时候浏览器强制转成了string。
var name = [0, 1, 2]
console.log(name) // 输出 "0,1,2"
因为window有内置属性name
,所以你在全局下声明name其实就是在给window.name赋值。关于window.name。类似的属性还有status
等
所以你用name1
으아아아
name
속성이 내장되어 있으므로 name을 전역적으로 선언하면 실제로 window.name에 값을 할당하게 됩니다. window.name 정보. 유사한 속성에는 상태
등이 포함됩니다. 🎜
🎜그래서 name1
을 사용하면 문제가 없습니다. 실제로 비전역 환경에서 이름을 사용하거나 노드의 글로벌 환경에서 이름을 사용하는 경우에는 쉼표가 없습니다. 🎜为情所困2017-05-18 10:58:27
Friends, name은 키워드입니다. 변수 이름을 지정하는 데 이것을 사용하지 마세요.
typeof를 입력하면 name은 string이고 name1은 object
给我你的怀抱2017-05-18 10:58:27
범위가 전역이므로 정의한 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]
})()
或者使用 ES6
的 let
으아아아
ES6
의 let
키워드를 사용하여 변수를 정의하세요🎜曾经蜡笔没有小新2017-05-18 10:58:27
name은 js의 속성 이름이고 예약된 필드이기 때문에 for in이 이 필드를 반복하면 문자열로 처리되므로 문자열의 모든 문자가 출력됩니다