2014-03-07 4 views
1

일치하는 항목이 없으면 변수에 null을 할당하고, 일치하는 항목이 있으면 두 번째 일치 항목을 변수에 지정합니다.null의 속성 '1'을 읽을 수 없습니다. 변수 설정

그것이 내가 어떻게 될지는 생각했지만 null을 반환 할 때 나머지 코드가 false 일 때를 계속 확인합니다. 그러면 Uncaught TypeError: Cannot read property '1' of null이됩니다.

어떻게하면이 기능을 작동 시켜도 오류가 발생하지 않도록 할 수 있습니까?

var matches = $("#search input").val().match(pattern);  
var id = []; 
id["new"] = (typeof matches === null) ? null : matches[1]; // <-- 
+0

확인 일치 항목의 값이 먼저있는 경우 – Rex

답변

1

typeof 연산자는 항상 === null이 아닌 문자열을 반환합니다. 아무것도 일치와 일치하는 배열, null가 falsy 값 없을 때 $("#search input").val().match(pattern)의 결과 이후

항상 null 될 것입니다, 그래서 당신은 다만 수 : 심지어

id["new"] = matches ? matches[1] :null; 

또는 :

id["new"] = matches && matches[1]; 
+0

감사합니다. 두 번째 코드는 어떻게됩니까? 그것은 작동하지만, 나는 그것을 이해하지 못하기 때문에, 바로 거기에서 일어나는 일이 궁금합니다. –

+1

@KidDiamond'A && B'는'A'가 truthy 값이면'B'를 반환하고 그렇지 않으면'A'를 반환합니다. 일치하지 않을 때'matches'가 null이기 때문에이 경우에는 null을 원하기 때문에이 코드는 단순히이 코드 일 수 있습니다. – xdazz

+0

첫 번째 방법은 잘못된 방법이 아닙니까? 'matches'가 진리라면'null'을 얻습니다 ... – Chris

0

이 시도 :

id["new"] = (matches == null) ? null : matches[1]; 

.match() 반환 null을 일치하는 항목이없는 경우.

관련 문제