>웹 프론트엔드 >JS 튜토리얼 >javascript_javascript 팁의 for/in 루프 및 사용 팁

javascript_javascript 팁의 for/in 루프 및 사용 팁

WBOY
WBOY원래의
2016-05-16 15:41:061149검색

JavaScript는 다양한 유형의 루프를 지원합니다.

for - 특정 횟수만큼 코드 블록을 반복합니다.

for/in - 객체의 속성을 반복합니다

while - 지정된 조건이 true일 때 지정된 코드 블록을 반복합니다.

do/while - 지정된 조건이 true일 때 지정된 코드 블록을 반복합니다

1. 연산자 : 왼쪽의 피연산자는 문자열이어야 하거나 문자열로 변환할 수 있어야 하며, 오른쪽의 피연산자는 객체 또는 배열입니다. 이 연산자의 왼쪽 값이 오른쪽 개체의 속성 이름인 경우 true를 반환합니다.

예:

   var point={x:1,y:2}; //对象直接量
   var has_x="x" in point; //返回true
   var has_z="z" in point; //返回false
   var ts="toString" in point;//返回true,toString为继承方法

2. for/in 문: 구문,

(객체의 변수)
진술;

객체 속성을 순회하는 방법을 제공합니다.

예:

for(var prop in my_object) {
    document.write("name:"+prop+";value:"+my_object[prop],"<br>");
  }

JavaScript 배열은 특별한 종류의 객체이므로 for/in 루프는 객체 속성과 마찬가지로 배열 첨자를 열거할 수 있습니다.

객체의 모든 속성 이름을 배열로 복사할 수 있습니다.

예:

var o= {x:1,y:2,z:3};
  var a=new Array();
  var i=0;
  for (a[i++] in o) 
  ;//空语句,用于初始化数组

3. in 연산자는 for/in 문과 다릅니다. for/in 문의 왼쪽은 변수, 배열 요소 또는 선언문을 선언하는 var 문일 수 있습니다. 객체의 속성은 사용할 수 없습니다.

4. 배열에 일반적으로 사용되는 액세스 속성 연산자는 "." 대신 "[]"입니다. 식별자 "." 대신 "[]"를 사용하여 동적이며 런타임에 변경될 수 있는 속성 문자열 값의 이름을 지정합니다.

예:

var stock_name= get_stock_name_from_user();//从用户处获取股票名
  var share= get_number_of_shares();//得到股票数量
  portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值
  将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值
  var value= 0;
  for (stock in portfolio) {
    value +=get_share_value(stock)*portfolio[stock];
  }

주식은 각 종목의 이름으로 입출금합니다.       

포트폴리오[주식]은 각 주식의 수량을 입출금합니다.

for-in 루프

기능: 객체 속성을 탐색하여 속성 이름과 속성 값을 모두 추출합니다

var obj = {
 "key1":"value1",
 "key2":"value2",
 "key3":"value3"
};
function EnumaKey(){
 for(var key in obj ){
  alert(key);
 }
}
function EnumaVal(){
 for(var key in obj ){
  alert(obj[key]);
 }
}
EnumaKey(obj)
//key1 key2 key3
EnumaVal(obj)
//value1 value2 value3

이런 방식으로 배열도 순회할 수 있지만 순서를 보장할 수 없으므로 권장하지 않으며, Array의 프로토타입에 속성을 추가하면 이 속성도 순회하게 됩니다.

For-in 루프는 배열이 아닌 객체를 순회하는 데 사용해야 합니다. for-in을 루프에 사용하는 것을 "열거"라고도 합니다.

기술적으로 배열에 대해 for-in 루프를 사용할 수 있지만(배열은 JavaScript의 객체이기 때문에) 이는 권장되지 않습니다. 배열 객체를 사용자 정의 함수로 강화한 경우 논리 오류가 발생할 수 있기 때문입니다. 또한 for-in에서는 속성 목록의 순서(순서)가 보장되지 않습니다. 따라서 배열에는 일반 for 루프를 사용하고 객체에는 for-in 루프를 사용하는 것이 가장 좋습니다.

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