2011-08-01 4 views
1

<a> 코드를 실행하고 리디렉션되지 않는 요소가 있습니다.이 두 가지 자바 스크립트 표현의 차이점은 무엇입니까?

여기 실 거예요 내가 같은 효과를한다고 생각 코드의 두 가지 예 :하지만,

이 작동합니다

<a href="#" onclick="alert('Works'); return false;" /> 

이되지 않습니다

<a href="#" onclick="return function() {alert('don't Work'); return false;};" /> 

Shouldn 둘 다 똑같습니까? 두 번째 시도에서 표현식이 평가되지 않고 익명의 함수를 호출하고 false를 반환합니까?

감사합니다.

답변

6

두 번째 예제는 함수를 정의하고 반환합니다. 결코 그것을 부르지 않습니다.

onclick="return function() {alert('don\'t Work'); return false;}();" 

전화하면 (따옴표 오류 수정) 동일한 효과가 나타납니다.

+0

+1 그는 두 번째 괄호를 잊어 버렸습니다. –

1

아니요 'don't이이 문자열을 중간에 끝내기 때문에 유효한 자바 스크립트가 아닙니다. don'tdoes not으로 바꾸고 무슨 일이 일어나는 지보십시오.

그리고 Quentins가 함수를 호출하지 않는다는 사실에 대한 답을보십시오!

1

두 번째 줄은 함수 개체를 반환하고 실행하지 않습니다. 대신 다음 실행 :

<a href="#" onclick="alert('Works'); return false;" >first link</a> 
<a href="#" onclick="function x() {alert('don\'t Work'); return false;}; return x();" >second link</a> 

은 또한, "작동하지 않습니다"에 '문자를 이스케이프해야합니다.

관련 문제