2014-06-13 3 views
0

: http://javascript.crockford.com/private.html자바 스크립트 개인 방법을 사용 : 내가 여기에 자바 스크립트 변수와 함수의 가시성에 더글러스 크록 포드의 튜토리얼을 다음입니다

나는 다음과 같은 MyClass.js 파일을 작성하고 난 노드를 사용하여 터미널에서 그것을 실행하고 있습니다. 아래에 터미널과 수업 시간에 출력 결과를 보여줍니다. 나는 왜 "undefined"(그냥 사실 대신)가 반환되는지, 왜 내 console.log (로그)가 표시되지 않는지 이해하지 못합니다.

$ node MyClass.js 
undefined 
true 

그리고 내 수업

function MyClass(log) 
{ 
    this.log = log; 
     var that = this; 
     function _evaluate (log) 
     { 
      console.log(log); 
      return true; 
     }; 

    this.evaluate = function() 
    { 
    return _evaluate() ? true : false; 
    }; 

} 

var myObject = new MyClass('this is a test'); 
console.log(myObject.evaluate()); 
+2

'_evaluate'에 인수를 전달하지 않아서'undefined'를 얻습니다. 따라서'log'는 함수 내부에서'undefined'입니다. 예상되는 결과가 무엇인지 모르겠다 ... 매개 변수를 제거 하시겠습니까? –

+1

왜 '_evaluate' 함수에 대한 매개 변수가 있습니까? 생성자의 매개 변수 ('log')와 이름이 같으므로 그림자가 적용됩니다.'_evaluate()'(인자 없음)를 호출하기 때문에 'undefined'값을가집니다. 'console.log (that.log);'('_evaluate' 함수의'log' 매개 변수없이) 수행하십시오 – Ian

+0

사실입니다! – FranXh

답변

2

당신은 인수가없는 _evaluate 전화, 그래서 한 번 (7 호선), 다음 true (라인 19) undefined 인쇄합니다.

마지막으로 스크립트에는 전체적으로 반환 값이 없으므로 undefined이 인쇄됩니다.