2012-08-04 2 views
1

사람은 내가 아직도 나에게 재미 보인다 deceifer하려고 코드 느릅 나무의 조각을 설명해주십시오 수이해 JQuery와 페이스 북의 로그인 플러그인 구문은

내가 무엇을 이해하고 좋아하기 때문에 나는 logic..and 또한 페이스 북의 loggin에 필요하기 때문에 코드 does..scopewise 등

느릅 나무의 기능이 먼저 실행, 외부 하나 또는 내부 일 이 '쉼표를 무엇 .. 또한

var openid = { 


},doJsFacebookLogin: function (a) { 
     window.FB.login(function (b) { 
      b.authResponse && (b = "https://stackoverflow.com/users/oauth/facebook/js?accessToken=" + encodeURI(b.authResponse.accessToken), 
      a && (b += "&returnUrl=" + encodeURI(a)), window.location = b) 
     }, openid.facebook_login_params) 
    }, 

플러그인 코드를 작성하는 또 다른 방법입니다 몸에서 기능을 나타내는가? 함수가 먼저 실행

facebookLogin: function (a, b, c) { 
     c || ($("." + b).css("cursor", "wait"), openid.facebook_app_id ? openid.doJsFacebookLogin() : (this.setOAuthInfo(a.oauth_version, a.oauth_server), c || $("#openid_form").submit())) 
    }, 
etc... 

감사 리처드 ..

답변

1

, 외부 하나 또는 외부 일이 실행되는 내부 일

, 그것은 내부 하나를 호출합니다. 당신 자신이 당신의 코드 어딘가에 foo()를 부를 것이다, 그 함수는 말을 약간 메시지를 가져 window 객체의 alert 메소드를 호출 -

이 기본적으로 다르지 않다,의는

function foo() { 
    alert("bar"); 
} 

을 가정 해 봅시다 "바".

쉼표가 기능에서 벗어난 것은 무엇입니까?

이것은 실제로 하나의 을 갖고, 세미콜론 (;)으로 구분하지 않는 단지 방법입니다 -하지만 표현 대신를 사용하여, 단지 쉼표로 분리. (자체적으로 JavaScript에서 연산자이지만 표현식 시퀀스를 더 이상 나타내지는 않습니다. 어떤 식 으로든 논리적으로 연결하지는 않습니다.)

진술이 유효한 표현식을 만드는 한 그렇게; 이 경우 실제로 이점을 발견 할 수는 없지만, 단일 표현식의 결과가 다른 논리적 연산자 인 f.e와 논리적으로 결합되면 다른 것이 될 것입니다. & & 또는 ||이 전체 표현식의 값은 해당 함수의 반환 값으로 사용되므로 함수를 호출하는 다른 함수/코드 부분이 함수의 성공 또는 실패를 이와 같이 결정할 수 있습니다.

JavaScript에서 실제로 표현식을 구성하는 것에 익숙하지 않은 경우 여기 http://lib.ru/JAVA/javascr/expr.html#expr (또는 원하는 JS 책)을 참조하십시오.

+0

당신의 설명에 많은 감사를드립니다. 마지막 코드를 가지고 있습니다 만,이 코드 블럭이 닫히는 것을 볼 수는 없습니다 ...}, openid.facebook_login_params) .. 나는 단지 닫는 괄호가 외부 기능의 본체? – Richard

+0

'}'는 내부 함수의 함수 본문을 닫습니다 (이름에 주어진 이름이 없기 때문에 "익명"함수입니다). 그리고 나서')'는 함수에 주어진 매개 변수의 목록을 닫습니다 function window.FB.login. 그래서 실제로는 함수 window.FB.login의 호출입니다.이 함수는 익명의 함수를 첫 번째 매개 변수로 가져오고, 객체는 openid.facebook_login_params를 두 번째 매개 변수로 사용합니다. [...] – CBroe

+1

[계속]] 함수 참조를 다른 함수의 매개 변수로 제공하는 것을 "콜백"이라고합니다. "외부"함수가 수행해야 할 작업을 완료하면 "내부"함수를 호출하고 일반적으로 매개 변수를 제공합니다 그 자체가 방금 생성/요청 된 것입니다. 이것은 자바 스크립트에서 매우 일반적인 개념입니다. 특히 비동기 워크 플로우 (페이스 북 API 메소드로 작업 할 때 일반적으로 사용됩니다. HTTP 요청을해야하기 때문에 시간이 걸립니다. 그렇지 않으면 브라우저의 사용자 인터페이스 요청이 완료 될 때까지 "정지"됩니다). – CBroe

관련 문제