혼란

2014-11-15 3 views
0

나는 findAndReplace 기능에서 볼 수있는 다음 코드와 매우 혼란 스러워요 : 혼란

var regex = typeof searchText === 'string' ? 
      new RegExp(searchText, 'g') : searchText, 
     childNodes = (searchNode || document.body).childNodes, 
     cnLength = childNodes.length, 
     excludes = 'html,head,style,title,link,meta,script,object,iframe'; 

내가 삼항 연산자가 암시 생각 그 searchText 문자열, 다음 정규 표현식 인 경우 개체가 생성됩니다. 그러나 변수 childNodes, cnLengthexcludes은 어떤 유형이든 searchText에 관계없이 설정됩니다.

필자는 구문에 대해 혼란 스러울 수도 있지만 3-5 줄의 조건문이나 분리문이 있다고 생각하십니까? 분리 된 경우 2 행 끝 부분에 세미콜론이없는 이유는 무엇입니까?

+1

그냥 쉼표입니다. var a = x, b = y, c = z; 그래서'var regex = expression, childnodes = expression ....' – mplungjan

답변

2

3 - 5 행은 조건부 삼항 연산자의 일부가 아닙니다. 쉼표는 서로 관련이없는 별도의 변수를 선언하는 데 사용됩니다. 다음은 유효한 구문이 경우

var a = 1, b = 2, c = "apples"; 

, 'string' ? new RegExp(searchText, 'g') : searchText는 먼저 변수 regex 할당된다. 다른 변수도 마찬가지로 자체 표현식이 지정됩니다.