Winston을 4번 그리는 함수가 있는 프로그램으로 돌아왔습니다 Winston이 인생의 각 시점에 몇살인지 보여주도록 프로그램을 수정하였습니다 왜 그런지 곧 알게 될겁니다 하지만 우선 Winston에 대해서 몇가지 말 해줄 필요가 있습니다 Winston는 도넛 중독자입니다 하루에 3개씩 먹습니다 그렇기 때문에 얼굴이 이렇게 크고 노랑색입니다 그래서 도넛이 얼마나 그에게 나쁜지 경고하기 위해서, 인생의 각 시점에 얼마나 많은 도넛을 먹었는지 보여주도록 전 프래그램을 변경하고 싶습니다 예을 들면 Winston이 두살때 그것은 곧 , 3 X 365 X 2 만큼 먹었다는 겁니다 즉 하루에3개씩, 곱하기 365일, 곱하기 2 살이지요 그리고 헤더밑에 표시 하게습니다. 와!!!! 2천개의 도넛이네요. 2살짜리 에게는 너무나 많은 도넛이에요 14살이 되었을때는 3 X 365 X 14 를 먹겠네요 즉 1만5천개 입니다 계속 계산 할수 있겠지만, 페턴이 보이기 시작하네요 계산을 반복하고 있네요 하나만 변경하겠습니다: 햇수 (즉, 몇 년동안)를 변경하겠습니다 이것처럼 반복되는 코드를 볼때마다 스스로 생각해 봅니다 "흠 이것을 함수로 말들수 있을까?" 그럼요 당연히 만들수 있지요 그럼 지금 해 봅시다 함수를 이쪽에서 선언 해 보겠습니다 calcTotalDonunts = function 이라고 부르겠습니다 햇수 (the number of years)입니다 왜냐하면 계산 할때 마다 변하는 것은 단지 햇수 하나 이기 때문입니다 그리고 안 에서, 계산을 하겠습니다 그리고 변수(variable)에 저장을 합니다 즉 3 X 365 X numYears 좋습니다 이제 함수를 만들었구요 이 식(expression)을 calTotalDounts로 대치하겠습니다 함수을 부르고, 2를 값으로 보내겠습니다 근데 지금 전체 도넛양이 안 보이네요 흠, 무슨일이 일어 났지요? 우리의 함수가 전체 값을 계산 했네요 근데 값을 말 해 주지 않고 있어요 이건 꼭 수업시간에 선생님이 질문에 답하라고 불렀는데 답이 머리에서만 있고 너무 부끄러워 답을 말하지 못하고 있는 것 같네요 과제는 했는데, 선생님이 전혀 몰라주는것과 같아요 함수가 어디서든 불려져서 부른 곳에다가 값을 전달하려면 그 값을 명시적으로 반환하여야 합니다 그래서 값을 반환하려는 함수에서는 return 이라고 쓰고 반환하려는 값을 씁니다 모든 원하는 값을 아마도 그것은 변수 또는 값 또는 식이 될 수도 있는데 여기서 우린 return totalDonuts이라고 하겠습니다. 그럼, 누가 이 함수를 부르던지, 이렇게 닶을 얻을 것입니다 이제 값이 표시 되네요! 그리고 사실 이 함수를 좀더 간단하게 만들 수 있습니다 변수에다 값을 저장 할 필요가 없어요 그냥 여기 식(expression) 전체를 return 에 넣어줘도 됩니다 그러면 한 줄이 간단히 한 줄이 되지요 좋아요, 이제 살펴보지요 각 시점의 전체 도넛의 수를 계산하는 것은 함수를 불러, 햇수(number of year)를 넘겨줍니다 자 봅시다. calcTotalDounuts(25), 위치를 정확하게 해주고, calcTotalDounuts(65) 오케이, 와, 65까지 살게 되면 Winston은 7만개의 도넛을 먹게 되겠네요 엄청 많은 도넛이네요 제 생각에는 Winston이 그때 까지 못 살것 같아요 (웃음) 하지만 우리가 함수를 만든 한 일부분을 수정하는 것도 아주 쉬운 일이지요 만약 Winston이 이걸 보고 와, 이건 너무 많네요. 만약 하루에 하나만 먹으면요? 오케이, 그럼 여기로 가서 숫자 하나만 변경하면 되요 그럼 모든것이 변경되지요 그래서 2만3천개가 됩니다 여전히 많은 양이네요 아마도 Winston이 좋아요, 만약 한주에 하나면 먹으면요? 라고 하면 네, 합리적이네요, 좋아요 그럼 365를 50로 변경하고 왜냐하면 일년에 50주가 있으니깐요 좋아요, 이제 훨씬 낫네요 3천개 도넛, 적당한것 같아요 함수와 반환값으로 코드도 만들수 있고, 한 생명을 살리수도 있네요