찾다
웹 프론트엔드JS 튜토리얼JavaScript_javascript 팁의 for..in 루프 트랩 소개

JavaScript가 객체를 반복하는 두 가지 방법을 제공한다는 것은 누구나 알고 있습니다.
(2) for..in loop;
for 루프를 사용하여 배열 객체를 반복하는 것은 이미 흔한 일입니다. . 하지만 for..in 루프를 사용할 때는 모두가 주의해야 합니다. 왜 이렇게 말하는 걸까요? 여러분, 제 말을 들어보세요...
Javascript는 객체의 속성이나 배열의 각 요소를 반복하는 데 사용되는 특수 루프(즉, for..in 루프)를 제공합니다. 루프의 루프 카운터는 숫자가 아닌 문자열입니다. 여기에는 현재 속성의 이름이나 현재 배열 요소의 인덱스가 포함됩니다.
사례 1:

코드 복사 코드는 다음과 같습니다.
//사용 for.. in 루프는 객체 속성
varperson={
name: "Admin",
age: 21,
address: "shandong"
}
for(vari 직접){
console.log(i);
}

실행 결과는 다음과 같습니다.
name
age
address
객체, 변수 i는 루프 카운터가 객체의 속성 이름임을 의미합니다.

코드 복사 코드는 다음과 같습니다.
// 배열을 순회하려면 for..in 루프를 사용하세요.
vararray = ["admin","manager","db"]
for(vari in array){
console.log(i);
}

실행 결과:
0
1
2
배열을 순회할 때 변수 i는 은 루프 카운터이고 현재 배열 요소의 인덱스입니다
사례 2:
그러나 for..in 루프는 지금은 상당히 유용한 것 같지만 너무 일찍 기뻐하지는 마세요. 다음 예를 살펴보십시오.

코드 복사 코드는 다음과 같습니다.
var array = ["admin","manager","db"];
//배열 이름 속성에 프로토타입 추가
Array.prototype.name= "zhangsan"
for(var i in array){
alert(array[i])
}

실행 결과:
admin
manager
db
zhangsan
입니다. 왜 장산이 이유 없이 나타나는지
이제 for 루프를 사용하면 어떻게 되는지 볼까요?

코드 복사 코드는 다음과 같습니다.
vararray = ["admin","manager "," db"];
//배열의 프로토타입에 이름 속성 추가
Array.prototype.name = "zhangsan";
for(var i =0 ; ialert(array[i])
};

실행 결과:
admin
manager
db
아, 이제 .in 루프는 특정 유형의 프로토타입에 있는 메서드와 속성을 순회하므로 코드에 예상치 못한 오류가 발생할 수 있습니다. 이 문제를 방지하려면 객체의 hasOwnProperty() 메서드를 사용하여 객체의 속성이나 메서드가 상속되지 않으면 hasOwnProperty() 메서드가 true를 반환합니다. 즉, 여기서 검사에는 다른 개체에서 상속된 속성 및 메서드가 포함되지 않고 특정 개체 자체에서 직접 생성된 속성만 포함됩니다.
사례 3:

코드 복사 코드는 다음과 같습니다.
vararray = [ "admin" ,"manager","db"];
Array.prototype.name= "zhangshan";
for(vari in array){
//직접 생성한 속성이 아닌 경우 객체 자체(즉, // 속성은 프로토타입의 속성임) 표시를 건너뜁니다.
if(!array.hasOwnProperty(i)){
continue
}
alert; (array[i]);
}

실행 결과:
admin
manager
db
모든 것이 이전과 같습니다. 모르겠어, 동지들은 이 글을 읽고 어떤 느낌이 들까? "구름과 안개가 갈라져 맑은 하늘을 본다"는 느낌이 들지 않나요?
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.