메로니
104
2021-03-20 12:20:45
3
208

자바스크립트 질문


let personVar = {
    name :"name",
    first :"first",
    second :"second",
    four : function fInPersonVar () {
        return "fInPersonVar~~~";
    }
}

personVar.five = function() {
    personVar.five.six = function(){
        return "six~~~";
    }
};

personVar.five();

console.log("personVar var"personVar.five.six());



여기서 personVar.five();를 쓰지 않으면 그 아래 콘솔로그에
personVar.five.six is not a function
라는 에러가 뜹니다.

이게 알고리즘? 규칙?적인 부분에서 왜 문제가 되는지 알려주시면 감사하겠습니다.
단순히 personVar.five()로 함수를 실행시켜주지 않아서라고 한다면

personVar.five().six() 같은 문법으로 연쇄적으로 실행시키는 문법은 왜 안되는건가요?






0
  • 답변 3

  • siva6
    5k
    2021-03-20 12:42:17

    six()라는 녀석이 five()를 호출해야 만들어지니 그런거구요.


    personVar.five()의 결과(반환)값이 뭔가요? 거기에 바로 six()를 호출하니 안되죠.

    personVar.five().six();

    personVar.five():

    personVar.six();

    라고 생각하신 것 같은데요.

    const o = personVar.five();

    o.six();

    입니다.



  • 메로니
    104
    2021-03-20 12:55:46 작성 2021-03-20 12:58:41 수정됨

    siva6 일단 답변 감사드립니다 ㅠ 이해가 안되는 부분이 있어서 그러는데


    1. personVar.five()의 결과(반환)값이 뭔가요? 라는 말씀은 현재 저 함수에서 반환값이 없다는 말씀이시죠?


    2. personVar.five().six();는 personVar.five().six();로 생각했습니다. 객체처럼 생각하고 이렇게 말씀드린건데 구조적으로 오류인건가요?


    저는 젤 위에 선언한 personVar  객체처럼 personVar.name.first 이런식으로 계층적으로 함수도 실행될 것이다고 막연히 생각했거든요.(스코프로 인한 착각인것인가요?) 이거는 완전히 구조적으로 잘못된 접근인가요? function a(){ function b(){} } < 이런 형태처럼 함수 안에 함수가 들어있는 형태라..


  • 오징어먹물식빵
    310
    2021-03-20 16:10:28

    1. five()의 반환값은 undefined입니다. (당연히 반환을 하고 있지 않으니)

    2. 

    personVar.five = function() {
        personVar.five.six = function(){
            return "six~~~";
        }
    
        return personVar.five;
    };


  • 로그인을 하시면 답변을 등록할 수 있습니다.