메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

김태곤님께 재질문 드립니다.

kr***

|

2013-02-04

JavaScript Cookbook : 한 권으로 끝내는 문제 해결

문제가 생길 때마다 바퀴를 다시 만들 필요가 없습니다. 찾고자 하는 해결책이 가득 들어 있습니다. 일반적인 프로그래밍 작업, 크로스 브라우저 프로그램을 만드는 방법 등의 코드 레시피가 수록되어 있습니다. 프로젝트에 바로 적용할 수 있는 예제 코드를 제공합니다.

  • 저자 : 셸리 파워즈
  • 번역 : 김태곤
  • 출간 : 2011-12-16
안녕하세요
답변 감사드립니다.

말씀하신대로 전역 플래그를 빼고 실행시켜보니 무한루프에 빠지는 걸 확인했습니다.
감사합니다.

정규 표현식의 결과에 대해서는 아직도 의문이 많아 추가 질문드리고자 합니다.

1. 정규 표현식 결과의 input이나 index같은 property는 어디서 나오는지 의문입니다. 그 속성들은 배열과는 상관없는 속성 아닌지요?

2. 해당 예제를 테스트해보면 length가 늘 1입니다. length가 1인 배열을 반환할거라면 배열을 반환하는 이유를 이해하기 어렵습니다.

3. exec 메소드의 결과물이 aaa라면 aaa[0], aaa[1] 이런 식으로 접근해야 배열의 값을 가져올수 있다고 저는 생각하는데 그냥 aaa를 찍어도 aaa[0]의 값과 동일한 결과를 보여줍니다.

제가 자바스크립트의 배열을 잘못 알고 있어서 그런 건지는 모르지만 참 이해하기 어렵습니다. 그래서 정규표현식의 결과물은 배열이 아니라 특정한 객체가 아닌가 하는 의문이 드는 겁니다.

자꾸 번거롭게 해서 죄송합니다.

제가 테스트한 소스입니다.

function aaa() {

var searchString = "Now is the time and this is the time and that is the time";
var pattern = /t\w*e/g;
var matchArray;

var str = "";
while( (matchArray = pattern.exec(searchString)) != null)
{
alert(typeof matchArray);
alert(matchArray.input);
alert(matchArray.length);
alert(matchArray[0]);
alert(matchArray[1]); // undefined
alert(matchArray);

str += "at " + matchArray.index + " we found " + matchArray + ".
";
}

alert(str);


}

window.onload = aaa();
닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?