window에는 name 속성이 내장되어 있으므로 name을 전역적으로 선언하면 실제로 window.name에 값을 할당하게 됩니다. window.name 정보. 유사한 속성에는 상태 등이 포함됩니다. 🎜
🎜그래서 name1을 사용하면 문제가 없습니다. 실제로 비전역 환경에서 이름을 사용하거나 노드의 글로벌 환경에서 이름을 사용하는 경우에는 쉼표가 없습니다. 🎜
범위가 전역이므로 정의한 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 키워드를 사용하여 변수를 정의하세요🎜
그 이유는
이름
이 특별하고 값을 할당할 때 브라우저가 이를 문자열로 변환해야 하기 때문입니다.name
特殊,在赋值的时候浏览器强制转成了string。因为window有内置属性
name
,所以你在全局下声明name其实就是在给window.name赋值。关于window.name。类似的属性还有status
等所以你用
window에는name1
으아아아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
实际你可以输出看一下会发现它并不是数组而是字符串而恰好字符串是可以用循环遍历的 所以输出了逗号
解决方法:不使用全局作用域 加一层自执行函数
或者使用
해결책: 전역 범위를 사용하지 말고 자체 실행 기능 레이어를 추가하세요🎜 으아아아 🎜또는ES6
的let
으아아아ES6
의let
키워드를 사용하여 변수를 정의하세요🎜콘솔에 직접 출력하면 배열이 문자열로 처리되기 때문입니다
해봤는데 변수 이름에 문제가 있는 것 같습니다. 이름이면 모든 문자가 출력됩니다. 구체적인 이유는 알 수 없습니다
name은 js의 속성 이름이고 예약된 필드이기 때문에 for in이 이 필드를 반복하면 문자열로 처리되므로 문자열의 모든 문자가 출력됩니다