Return to Video

Local and Global Variables (Video Version)

  • 0:00 - 0:11
    이제 이제 함수의 기본들을 익혔으니, 약간 까다로운
    지역변수 (local variable)와 전역변수(glbal variable)에 대해서 말하겠습니다
  • 0:11 - 0:15
    이 용어들은 지금 여러분들에게 아무 의미도 없을지 모릅니다
    우선 예를 가지고 시작해 봅시다
  • 0:15 - 0:20
    저는 이 프로그램을 제가 어릴 때 몇 인치씩
    컸는지 보여주기 위해서 만들었습니다
  • 0:20 - 0:25
    사람들은 다른 속도로 크기 때문에
    calcInches이란 함수를 만들었습니다
  • 0:25 - 0:31
    이 함수에는 startAge(시작 나이), endAge(끝나는 나이)
    그리고 inchesPerYear(매년 자란 인치)룰 전달합니다
  • 0:31 - 0:35
    그러면 그 함수는 그 기간동안 몇 인치가 자랐는지 계산해서
  • 0:35 - 0:38
    그 함수를 호출한 곳으로 그 값을 돌려 줍니다
  • 0:38 - 0:45
    보다시피 0살부터 8살까지에 대해
    calcInches를 호출하고 0, 8 그리고 2.5를 보냅니다
  • 0:45 - 0:49
    저는 매년 약 2.5인치씩 자랐기 때문입니다.
  • 0:49 - 0:53
    이를 계산 하면, 이는 20이란 결과를 보여줍니다.
  • 0:53 - 0:58
    그다음 8살 부터 16까지는, 8, 16 그리고 2를 전달합니다
  • 0:58 - 1:03
    왜냐하면 전과 비교하여 덜 자랐기 때문이고
    16이란 결과를 보여주는 것을 볼 수 있습니다
  • 1:03 - 1:08
    깔끔하죠? 하지만 이제 청소년기를 통틀어
    얼마나 자랐는지를 보이고 싶습니다
  • 1:08 - 1:17
    이건 어떻게 할까요? 음...
    내 프로그램 코드를 보면서 생각을 해봅시다
  • 1:17 - 1:22
    "흠… 무슨 값들을 내가 가지고 있죠?"
    총 인치 값처럼 보이는 것이 있나요?
  • 1:22 - 1:26
    음... totalInches란 변수가 calcInches 함수안에 있기 때문에
  • 1:26 - 1:31
    결과를 내서 뭐라고 하는지를 보는 것부터 시작을 합시다
  • 1:31 - 1:36
    즉 이 부분 text(totalInches, 10, 200)을 아래로 옮깁시다
  • 1:36 - 1:43
    그러면.. 어디까지 했죠? 어 어떡하죠? 'Oh noes!' 이모티콘이 튀어나왔습니다
    문제가 있다고 합니다
  • 1:43 - 1:52
    totalInches가 정의되지 않았답니다. 흠, 이상하네요, 왜냐하면
    여기에 totalInches에 관한 정의를 썼는데 말입니다. (var total inches =)
  • 1:52 - 2:00
    흠, 문제는 함수 안에서 totalInches를 선언했기 때문입니다
    이 줄에서 말입니다
  • 2:00 - 2:05
    그리고 함수 안에 변수를 선언하면
    이는 지역변수(local variable)로 취급합니다
  • 2:05 - 2:10
    이는 이 함수(calcInches)안에만 존재합니다.
  • 2:10 - 2:15
    그리고 함수 밖에 있는 모든 코드들은 함수 안에 있는
    지역변수(local variable)를 보지 못합니다
  • 2:15 - 2:19
    이것은 단지 반환되는 것만 봅니다
  • 2:19 - 2:22
    이는 변수는 보지 않고 값만 봅니다
  • 2:22 - 2:26
    그러므로 totalInches를 함수 밖에서 사용하고 싶다면
    컴퓨터는 이것이 무엇인지 모르고
  • 2:26 - 2:31
    '난 이 변수를 본 적이 없어. 정의가 되어있지 않아
    보여줄 수 없어'라고 합니다
  • 2:31 - 2:38
    코드 밖에서 위치한 코드가 이 변수를 볼 수 있게 하는 방법이 있습니다
  • 2:38 - 2:43
    그리고 이는 지역변수(local variable)에서
    전역변수(global variable)로 전환할 때입니다
  • 2:43 - 2:50
    정의를 함수 밖, 전역 범위라 불리는 곳으로 이동하면 됩니다
  • 2:50 - 2:59
    그리고 이제는 변수를 정의하거나 선언하지 않고
    함수 안에서 값을 매번 바꾸기만 하면 됩니다
  • 2:59 - 3:03
    그러므로 'Total grown over life: 16'이란 것을 볼 수 있습니다
  • 3:03 - 3:07
    전역변수(global variable)로 바꿨기 때문에
    컴퓨터는 변수를 찾을 수 있었습니다
  • 3:07 - 3:10
    그러나 이 값은 우리가 정말 찾고 있는 값은 아닙니다
  • 3:10 - 3:12
    이 값은 단순히 가장 최근 값입니다
  • 3:12 - 3:18
    왜냐하면 이 함수를 부를 때마다 totalInches를
    그 당시에 계산하는 값으로 인식하기 때문입니다
  • 3:18 - 3:24
    그러므로 우리가 정말 하고 싶은 것은
    전체 총합을 저장할 수 있는 새로운 변수를 원합니다
  • 3:24 - 3:29
    매번 계산한 값을 계속 합해 나간 전체 범위에서의 총합 말입니다
  • 3:29 - 3:38
    그러므로 이를 지역변수(local variable)로 다시 바꾸고
    lifeInches란 새로운 전역변수(globa variable)를 만듭시다
  • 3:38 - 3:41
    그리고 그것을 0에 놓고 시작합시다
  • 3:41 - 3:50
    함수 안에서는, lifeInches +=totalInches라고 하여
    이 전역변수에 더해 나갑니다
  • 3:50 - 3:53
    이 함수를 부를 때마다 계산해서 나온 값을 계속 더할것 입니다
  • 3:53 - 3:56
    그리고 이 아래쪽에 lifeInches를 놓읍시다
  • 3:56 - 4:00
    (lifeInches, 10, 200)
  • 4:00 - 4:04
    짜잔! 인생에서 총 성장한 값이 나옵니다.
  • 4:04 - 4:07
    이 것은 제 진짜 키가 아닙니다
    그것보단 큽니다
  • 4:07 - 4:11
    그러나 알다시피 태어날 때 키는
    0보다는 더 큰 값에서 시작합니다
  • 4:11 - 4:13
    총합을 구하기 위해선
    아마도 20에서 시작해보도록 합시다
  • 4:13 - 4:17
    여기있네요, 이게 제 키입니다
  • 4:17 - 4:22
    좋습니다. 이제 복습을 해봅시다
    totalInches는 흔히 지역변수(local variable)라 불리는 것입니다
  • 4:22 - 4:27
    이 함수 밖이 아닌 안에 선언한 것을 알기에
  • 4:27 - 4:33
    이는 여기 밖에 있는 이 코드는
    totalInches란 변수를 모른다는 것을 의미합니다
  • 4:33 - 4:38
    그리고 이제 lifeInches는 전역 변수라고 불리는 것입니다
  • 4:38 - 4:43
    왜냐하면 이의 선언을 전역 범위
    즉 함수 밖에서 선언되기 때문입니다
  • 4:43 - 4:47
    함수와 변수를 작성할 때에는 이것을 꼭 기억하시길 바랍니다
  • 4:47 - 4:51
    그리고 함수 안에서 사용하기 위해 지역변수를 원하는지
  • 4:51 - 4:55
    아니면 프로그램 전체에서 쓰기 위해
    지역변수(local variable)를 필요로 하는지 생각하시길 바랍니다
  • 4:55 - 4:58
    그리고 이해하기 어렵다고 걱정하지 마시길 바랍니다
  • 4:58 - 5:02
    이 개념은 특히 JavaScript 프로그래밍에서 가장 어려운 개념 중 하나입니다
  • 5:02 - 5:06
    그리고 이 것은 꾸준히 연습할수록 느는 것 입니다
Title:
Local and Global Variables (Video Version)
Description:

more » « less
Video Language:
English
Duration:
05:06

Korean subtitles

Revisions