2017-12-15 17 views
-1

내 코드입니다 : 나는 기능 속성을 geht 할 수없는 나는 왜함수 속성을 호출 할 때이 정의되지 않은 이유는 무엇입니까? 여기

function myOuterFunction() { 
 

 
    myInnerFunction(); 
 

 
    var myObject = {say: myInnerFunction.myProperty1, 
 
        say2: myInnerFunction.myProperty2 
 
       }; 
 

 

 
    function myInnerFunction(){ 
 

 
     return {myProperty1: "hello", 
 
       myProperty2: "world" 
 
      }; 
 
    } 
 
    
 

 
console.log(myObject); 
 
} 
 
myOuterFunction();

?

다른 변수를 사용하여이 문제를 해결할 수 있지만이 솔루션을 사용할 수없는 이유는 무엇입니까?

감사합니다.

+0

전화 기능을 작성해야하는 방식이다 – Li357

+0

를이 함수

입니다 자바 스크립트를 말하지 않는다()없이 myInnerFunction()를 호출' 마술처럼 반환 값을 함수 자체에 적용하지 않습니다. 반환 값을 무언가 ('var properties = myInnerFunction()')에 할당하고 반환 값 ('properties.myProperty1')에 접근해야합니다. – JJJ

+0

'myInnerFunction'은 함수 객체 자체를 나타내며 호출 될 때 반환되는 값이 아닙니다. myInnerFunction(). myProperty1'을 사용할 수 있습니다. –

답변

2

사용하기 전에 값을 저장해야합니다.

function myOuterFunction() { 
 
    var data = myInnerFunction(); 
 
    var myObject = { 
 
    say: data.myProperty1, 
 
    say2: data.myProperty2 
 
    }; 
 
    function myInnerFunction() { 
 
    return { 
 
     myProperty1: "hello", 
 
     myProperty2: "world" 
 
    }; 
 
    } 
 
    console.log(myObject); 
 
} 
 
myOuterFunction();

+0

고마워요! :) – Andy

0

실수는 1)() myOuterFunction 내부 myInnerFunction()를 사용하지 않으려 고합니다. 그것은 좋은 프로그래밍 연습이 아닙니다. 2) myInnerFunction()을 호출하면 open에서 호출 할 때 아무것도 수행되지 않습니다. 당신은 변수에 반환 값을주고 있지 않습니다. 3) myInnerFunction`호출 ... 이것은 당신이 그것을

function myOuterFunction() { 
    var myObject = {say: myInnerFunction().myProperty1, 
         say2: myInnerFunction().myProperty2 
        }; 

    console.log(myObject); 
} 
function myInnerFunction(){ 

     return {myProperty1: "hello", 
       myProperty2: "world" 
      }; 
} 
myOuterFunction(); 
+0

고마워요! 함수에서 함수를 구현하는 것을 항상 피해야합니까? – Andy

+0

javascript do not't는 그것에 어떤 문제도 가지고있다. 그러나 만일 그렇지 않으면 더 좋은 연습이다. 습관이되어 다른 프로그래밍 언어에서 사용하게되면 오류가 발생하기 때문입니다. 조언을 주신 덕분에 그냥 – parsa

+0

!! – Andy