2011-04-29 12 views
2

내가 전역 선언기본적인 자바 스크립트 질문

//Contact is a record object that has toString() which prints the name. 
function getClient() { 
    myClient = new Object(); 
    debug(input.contact); // This prints properly 
    myClient.contact = input.contact; 
    debug(myClient.contact); // This prints properly 
} 

을 나는 같은 사용하려고하는 또 다른 기능이 있습니다

function dispatchClient() { 
    debug(myClient.contact); 
} 

을 그리고 내가 보는 결과는 정의되지 않았다. 여기 뭔가 잘못 됐니? (디자인 측면 무시)

그럴 경우 어떻게 전역 함수의 상태를 전달할 수 있습니까? 그것이 틀린 것이 아니라면, 음, 나는 더 깊게 파고해야 할 수도 있습니다!

+0

함수를 호출하는 방법을 우리에게 알려주지 않았으며'input' 정의 방법을 알려주지 않았습니다. – Quentin

+1

자바 스크립트는 대소 문자를 구분합니다. 즉, 'myclient'와'myClient'는 다른 이름입니다. –

+0

'dispatchClient()'를 호출하기 전에'getClient()'를 호출하고 있습니까? 이것은 잘 작동합니다 : http://jsfiddle.net/f7xbK/. – mellamokb

답변

3

dispatchClient이 호출되기 전에 getClient이 호출 될 수 있습니다. 이 시점에서 myClient은 아직 정의되지 않았습니다.

+0

'getClient'함수가 종료 된 후 'input'이 삭제되면 myClient가 여전히 유효합니까? – Kiran

+0

'input.name'이 String 또는 Number 인 경우 yes – Imran

+0

감사합니다. 하위 속성이있는 객체는 무엇입니까? – Kiran

0

myclientmyClient은 두 개의 다른 변수입니다.

코드는 여전히 작동해야합니다. getClient 함수보다 먼저 dispatchClient를 호출하지 않는 한

+0

정답을 downvoting 해 주셔서 감사합니다 =) – Headshota

+0

죄송합니다. 내 맞춤법 실수를 막기 위해 투표했습니다. – Kiran

0

당신이 dispatchClient 전에 getClient()를 호출하는 경우() *하여 MyClient * 변수가 정의되지 않은 것입니다.

다른 possiblity가 당신이 내 * C를 사용하는() dispatchClient에서, 이름 (대소 문자 구분)입니다 * 전역 변수 내 * C * lient보다 더 개의 다른입니다 lient.

가능하면 (코드에 따라 다름), 시작 부분에 인스턴스를 생성 : 당신이 myClient로 나중에 객체를 사용하는 동안

var myclient = new Object(); 
0

리셀러 (VAR)가 myclient입니다. Javascript는 대소 문자를 구분하므로 동일한 변수가 아닙니다.