jquery 간단 질문

jquery 간단 질문

QA

jquery 간단 질문

본문

출처 : https://api.jquery.com/checked-selector/
위출처의 예제인데요

궁금한게 빨강, 파랑, 연두색 으로 소스 순서를 해야만 실행되고
다른 순으로 순서를 바꾸면 왜 실행이 안되죠?
녹색부분이 먼저 적혀지면 왜 실행이 안될까요? ^^

<script>
var countChecked = function() {
var n = $( "input:checked" ).length;
$( "div" ).text( n + (n === 1 ? " is" : " are") + " checked!" );
};

countChecked();
$( "input[type=checkbox]" ).on( "click", countChecked );
</script>

이 질문에 댓글 쓰기 :

답변 3

php의 태생은 인터프리터입니다.

하지만, php는 성능향상을 위해서, 

어떤 php파일이 최초로 실행될때, 먼저 그 파일내에 구문들이 문법에 맞는지등의 구문분석/파싱을 하고, 함수명,변수명 정의라든지 주석제거등의 전처리를 하여 이것을 bytecode라는 중간단계의 언어로 컴파일하여 캐시에 저장해놓습니다.(일명 opcode 캐시라고 하죠). 

(또한 파일이 수정된다면 다시 이 전처리작업을 하게되죠..수정되지 않으면 캐시에 있는 bytecode를 바로 읽어서 사용하니 빠르게 실행될테고요..)

그리고 이렇게 재구축된 opcode캐시내의 bytecode를 Zend엔진이 한줄씩 해석하여 인터프리트하면서 실행을 하여 결과를 브라우저로 뿌려줍니다.

 

인터프리터의 성능을 향상하기위해 추가적인 단계(opcode캐시)를 하나 더 집어넣은거죠..

즉, 성능의 단점을 보완한 향상된 인터프리터 언어입니다.

 

자바스크립트에는 이런 전처리 과정이 없는 순수 인터프리터 언어이니, 정의되지 않은 함수명을 사용하면 에러가 납니다. 

녹색 부분을 보시면 

$( "input[type=checkbox]" ).on( "click", countChecked ); 

구문의 의미가 input 태그중 type이 체크박스일 경우 해당 객체를 "click" 클릭했을때

countChecked라는 함수를 실행해라. 라는 뜻인데 이 구문을 먼저 적으면 

countChecked 라는 함수가 정의 되지 않아서 뭔지 모르기 때문에 에러가 나는겁니다. 

 

그래서 빨간색으로 적힌 

var countChecked = function() {
var n = $( "input:checked" ).length;
$( "div" ).text( n + (n === 1 ? " is" : " are") + " checked!" );
};

함수선언뒤에 실행되야 제대로 에러나지 않고 실행되는거에요. 

보통 다른 언어의 경우는 함수 선언이 아래에 있어도 되는데
jquery는 함수 선언이 먼저 되어야 한다는 뜻 입니까?

jquery는 자바스크립트와 같은 것으로 알고 있는데요
자바스크립트는 함수를 나중에 선언해도 되는데요.??

jquery는 자바스크립트와 같은 것으로 알고 있는데요 -> 맞습니다. 

자바스크립트는 함수를 나중에 선언해도 되는데요.?? -> 자바스크립트니까, 인터프리터 언어이기떼문에 한줄씩 읽고 해석해야 하므로 나중에 선언하면 에러가 나는게 당연합니다. 잘못 알고 계십니다. 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 17
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT