웹 프론트엔드 JS 튜토리얼 자바스크립트에서 for 루프를 사용할 때 주의할 점

자바스크립트에서 for 루프를 사용할 때 주의할 점

Aug 22, 2017 am 11:11 AM
javascript js 주의할 점


동일한 코드를 매번 다른 값으로 반복해서 실행하려는 경우 루프를 사용하는 것이 편리합니다.

우리는 for 루프를 자주 사용하고 for 루프 부서는 종종 배열을 반복합니다.

// 次佳的循环
for (var i = 0; i < myarray.length; i++) {
 // 使用myarray[i]做点什么}
로그인 후 복사

이러한 코드에는 큰 문제가 없지만 루프할 때마다 다음과 같은 길이를 얻게 됩니다. 특히 myarray가 배열이 아니라 HTMLCollection 개체인 경우에는 코드를 줄이세요.

다음 코드를 다시 살펴보세요.

for (var i = 0, max = myarray.length; i < max; i++) {
 // 使用myarray[i]做点什么}
로그인 후 복사

이 코드는 배열 길이를 한 번만 가져오므로 코드 품질이 향상됩니다.

단일 var 형식을 사용하면 루프에서 변수를 꺼낼 수 있습니다. 다음은 다음과 같습니다.

function looper() {
 var i = 0,
  max,
  myarray = [];
 // ...
 for (i = 0, max = myarray.length; i < max; i++) {
  // 使用myarray[i]做点什么
 }}
로그인 후 복사

JavaScript에서 for 루프를 사용할 때 발생하는 문제 요약

이 문제에 대한 논의는 원래 회사 내부 이메일에서 나온 것입니다. 이 문제에 대한 논의를 방금 녹음했습니다.

일부 프로젝트 팀은 "for(x in array)"를 사용할 때 IE 브라우저에 x에 대한 예상치 못한 값이 나타나는 문제를 발견했습니다.

구체적으로 Array.prototype.indexOf 메서드가 사용자 정의된 경우(예: 특정 프로토타입 오염으로 인해) 이전 버전의 IE 브라우저가 array.indexOf 메서드를 지원하지 않기 때문일 수 있으며 개발자가 그런 브라우저는 다음과 같은 문제를 가질 수 있습니다:

Array.prototype.indexOf = function(){...};
var arr = [1, 2];for (x in arr) console.log(x);
로그인 후 복사

//will 출력

1
2function(){…}
로그인 후 복사

즉, indexOf 메소드가 출력됩니다.

해결책은 매우 간단합니다. 이 메서드를 추가하지 않거나 "for (i=0; i < array.length; i++)" 등과 같은 루프를 사용하는 것입니다.

그런데 문제의 본질은 무엇입니까? 어떤 사람들은 for(x in obj)의 사용법이 실제로 객체를 순회하기 때문일 것이라고 추측하며, 배열의 구현은 key가 단지 확립된 것이라는 점을 제외하면 실제로 일반 객체의 구현과 동일합니다. value:

{0:"something", 1:"something else"}
로그인 후 복사

배열을 순회할 때 for...in과 for(;;)를 사용하는 것에는 차이가 있다는 것이 stackoverflow 질문과 답변에서도 언급되었습니다. 전자는 객체의 속성을 열거하는 것을 의미합니다.

열거 순서는 보장할 수 없습니다.

상속 속성도 열거됩니다.

Array.prototype.forEach에 대한 지원 측면에서도 IE8과 아래는 정확하게 지원되지 않습니다.

여기에는 forEach 메서드의 호환성에 대한 자세한 설명도 나와 있습니다. 실제로 주요 JavaScript 프레임워크(예: jQuery, Underscore, Prototype 등)에는 모두 for-each 기능에 대한 안전하고 일반적인 구현이 있습니다.

JSLint의 for in 장에서도 for in 문이 객체의 속성 이름을 통한 루프를 허용하지만 프로토타입 체인을 통해 상속된 속성을 순회하므로 많은 경우 예상치 못한 오류가 발생한다고 언급되어 있습니다. 조잡한 해결책이 있습니다:

for (name in object)
 { if (object.hasOwnProperty(name))
 { .... } }
로그인 후 복사

일부 사람들은 JavaScript에 코드 블록 수준 변수가 없기 때문에 이 루프와 유사한 for(var i=0;i를 사용하는 문제를 언급했습니다. i의 액세스 권한은 실제로 그것이 위치한 방법입니다. 일부 책에서는 프로그래머에게 이러한 변수 선언을 한 곳에 두라고 조언하지만 직관적으로 말하면 대부분의 경우 충분히 합리적이지 않습니다.

JavaScript 1.7에 도입된 "let"을 사용하면 이 문제를 해결할 수 있으며, 이를 실제 코드 블록 수준 변수로 만들 수 있습니다.

for(let i =0; i < a.length; i++)
로그인 후 복사

마지막으로 이 제약 조건은 Google의 JavaScript 스타일 가이드에도 포함됩니다.

for-in loop:
Only for iterating over keys in an object/map/hash
로그인 후 복사

위 내용은 전체 내용입니다. JavaScript에서 for 루프를 사용할 때 주의해야 할 문제에 대한 이 기사는 문제 요약과 함께 향후 작업과 연구에 도움이 되기를 바랍니다. 업계 내부자의 비판과 제안을 환영합니다.

위 내용은 자바스크립트에서 for 루프를 사용할 때 주의할 점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 Apr 03, 2024 am 11:55 AM

얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

Mingchao 시험 중 주의 사항 소개 Mingchao 시험 중 주의 사항 소개 Mar 13, 2024 pm 08:13 PM

Mingchao 테스트 중에는 정보 손실 및 비정상적인 게임 로그인을 방지하기 위해 시스템 업그레이드, 공장 초기화, 부품 교체를 피하시기 바랍니다. 특별 알림: 테스트 기간에는 이의 제기 채널이 없으므로 주의해서 처리하시기 바랍니다. Mingchao 테스트 중 주의 사항 소개: 시스템 업그레이드, 공장 설정 복원, 장비 구성 요소 교체 등을 수행하지 마십시오. 참고: 1. 정보 손실을 방지하려면 테스트 기간 동안 시스템을 주의 깊게 업그레이드하십시오. 2. 시스템이 업데이트될 경우 게임에 로그인할 수 없는 문제가 발생할 수 있습니다. 3. 이 단계에서는 아직 어필 채널이 열리지 않았습니다. 플레이어는 자신의 재량으로 업그레이드 여부를 선택하는 것이 좋습니다. 4. 동시에 하나의 게임 계정은 하나의 Android 기기와 하나의 PC에서만 사용할 수 있습니다. 5. 휴대폰 시스템을 업그레이드하거나 공장 설정으로 복원하거나 장치를 교체하기 전에는 테스트가 완료될 때까지 기다리는 것이 좋습니다.

Douyin에서 처음으로 라이브 방송을 시작하는 방법은 무엇입니까? 처음 생방송을 할 때 주의할 점은 무엇인가요? Douyin에서 처음으로 라이브 방송을 시작하는 방법은 무엇입니까? 처음 생방송을 할 때 주의할 점은 무엇인가요? Mar 22, 2024 pm 04:10 PM

단편 동영상 플랫폼의 등장으로 Douyin은 많은 사람들의 일상생활에서 없어서는 안 될 부분이 되었습니다. Douyin을 통한 라이브 방송과 팬들과의 소통은 많은 사용자들의 꿈입니다. 그렇다면 처음으로 Douyin에서 라이브 방송을 시작하는 방법은 무엇입니까? 1. Douyin에서 처음으로 라이브 방송을 시작하는 방법은 무엇입니까? 1. 준비 생방송을 시작하려면 먼저 Douyin 계정이 실명 인증을 완료했는지 확인해야 합니다. Douyin 앱의 "나" -> "설정" -> "계정 및 보안"에서 실명인증 튜토리얼을 확인하실 수 있습니다. 실명인증을 완료하신 후, 라이브 방송 조건을 충족하시면 Douyin 플랫폼에서 라이브 방송을 시작하실 수 있습니다. 2. 생방송 허가 신청 생방송 조건을 충족한 후 생방송 허가를 신청해야 합니다. Douyin 앱을 열고 "나"->"크리에이터 센터"->"직접"을 클릭하세요.

네트워크 없이 pip를 설치하는 단계 및 주의사항 네트워크 없이 pip를 설치하는 단계 및 주의사항 Jan 18, 2024 am 10:02 AM

오프라인 환경에서 pip 설치 방법 및 주의사항 네트워크가 원활하지 않은 오프라인 환경에서는 pip 설치가 어렵습니다. 이 글에서는 오프라인 환경에서 pip를 설치하는 여러 가지 방법을 소개하고 구체적인 코드 예제를 제공합니다. 방법 1: 오프라인 설치 패키지를 사용합니다. 인터넷에 연결할 수 있는 환경에서 다음 명령을 사용하여 공식 소스에서 pip 설치 패키지를 다운로드합니다. 이 명령은 공식 소스에서 pip 및 해당 종속 패키지를 자동으로 다운로드합니다. 소스를 다운로드하여 현재 디렉터리에 저장합니다. 다운로드한 압축 패키지를 원격 위치로 이동

로컬 스토리지를 사용하여 데이터를 저장하는 단계 및 주의사항 로컬 스토리지를 사용하여 데이터를 저장하는 단계 및 주의사항 Jan 11, 2024 pm 04:51 PM

localStorage를 사용하여 데이터를 저장하는 단계 및 주의 사항 이 문서에서는 주로 localStorage를 사용하여 데이터를 저장하는 방법을 소개하고 관련 코드 예제를 제공합니다. LocalStorage는 서버를 통하지 않고 사용자 컴퓨터에 로컬로 데이터를 유지하는 브라우저에 데이터를 저장하는 방법입니다. 다음은 localStorage를 사용하여 데이터를 저장할 때 주의해야 할 단계와 사항입니다. 1단계: 브라우저가 LocalStorage를 지원하는지 확인

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

js와 vue의 관계 js와 vue의 관계 Mar 11, 2024 pm 05:21 PM

js와 vue의 관계: 1. 웹 개발의 초석인 JS 2. 프론트엔드 프레임워크로서의 Vue.js의 등장 3. JS와 Vue의 상호 보완적인 관계 4. JS와 Vue의 실제 적용 Vue.

JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 JavaScript에서 HTTP 상태 코드를 쉽게 얻는 방법 Jan 05, 2024 pm 01:37 PM

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가

See all articles