[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:10.77,Default,,0000,0000,0000,,이제 이제 함수의 기본들을 익혔으니, 약간 까다로운 \N지역변수 (local variable)와 전역변수(glbal variable)에 대해서 말하겠습니다 Dialogue: 0,0:00:10.77,0:00:15.33,Default,,0000,0000,0000,,이 용어들은 지금 여러분들에게 아무 의미도 없을지 모릅니다\N우선 예를 가지고 시작해 봅시다 Dialogue: 0,0:00:15.33,0:00:20.28,Default,,0000,0000,0000,,저는 이 프로그램을 제가 어릴 때 몇 인치씩 \N컸는지 보여주기 위해서 만들었습니다 Dialogue: 0,0:00:20.28,0:00:24.59,Default,,0000,0000,0000,,사람들은 다른 속도로 크기 때문에\NcalcInches이란 함수를 만들었습니다 Dialogue: 0,0:00:24.59,0:00:31.00,Default,,0000,0000,0000,,이 함수에는 startAge(시작 나이), endAge(끝나는 나이)\N그리고 inchesPerYear(매년 자란 인치)룰 전달합니다 Dialogue: 0,0:00:31.00,0:00:34.73,Default,,0000,0000,0000,,그러면 그 함수는 그 기간동안 몇 인치가 자랐는지 계산해서 Dialogue: 0,0:00:34.73,0:00:37.84,Default,,0000,0000,0000,,그 함수를 호출한 곳으로 그 값을 돌려 줍니다 Dialogue: 0,0:00:37.84,0:00:44.97,Default,,0000,0000,0000,,보다시피 0살부터 8살까지에 대해 \NcalcInches를 호출하고 0, 8 그리고 2.5를 보냅니다 Dialogue: 0,0:00:44.97,0:00:48.74,Default,,0000,0000,0000,,저는 매년 약 2.5인치씩 자랐기 때문입니다. Dialogue: 0,0:00:48.74,0:00:52.71,Default,,0000,0000,0000,,이를 계산 하면, 이는 20이란 결과를 보여줍니다. Dialogue: 0,0:00:52.71,0:00:58.24,Default,,0000,0000,0000,,그다음 8살 부터 16까지는, 8, 16 그리고 2를 전달합니다 Dialogue: 0,0:00:58.24,0:01:02.95,Default,,0000,0000,0000,,왜냐하면 전과 비교하여 덜 자랐기 때문이고\N16이란 결과를 보여주는 것을 볼 수 있습니다 Dialogue: 0,0:01:02.95,0:01:08.46,Default,,0000,0000,0000,,깔끔하죠? 하지만 이제 청소년기를 통틀어 \N얼마나 자랐는지를 보이고 싶습니다 Dialogue: 0,0:01:08.46,0:01:17.05,Default,,0000,0000,0000,,이건 어떻게 할까요? 음... \N내 프로그램 코드를 보면서 생각을 해봅시다 Dialogue: 0,0:01:17.05,0:01:21.51,Default,,0000,0000,0000,,"흠… 무슨 값들을 내가 가지고 있죠?"\N총 인치 값처럼 보이는 것이 있나요? Dialogue: 0,0:01:21.51,0:01:26.04,Default,,0000,0000,0000,,음... totalInches란 변수가 calcInches 함수안에 있기 때문에 Dialogue: 0,0:01:26.04,0:01:30.82,Default,,0000,0000,0000,,결과를 내서 뭐라고 하는지를 보는 것부터 시작을 합시다 Dialogue: 0,0:01:30.82,0:01:36.44,Default,,0000,0000,0000,,즉 이 부분 text(totalInches, 10, 200)을 아래로 옮깁시다 Dialogue: 0,0:01:36.44,0:01:43.46,Default,,0000,0000,0000,,그러면.. 어디까지 했죠? 어 어떡하죠? 'Oh noes!' 이모티콘이 튀어나왔습니다\N문제가 있다고 합니다 Dialogue: 0,0:01:43.46,0:01:51.82,Default,,0000,0000,0000,,totalInches가 정의되지 않았답니다. 흠, 이상하네요, 왜냐하면 \N여기에 totalInches에 관한 정의를 썼는데 말입니다. (var total inches =) Dialogue: 0,0:01:51.82,0:01:59.73,Default,,0000,0000,0000,,흠, 문제는 함수 안에서 totalInches를 선언했기 때문입니다\N이 줄에서 말입니다 Dialogue: 0,0:01:59.73,0:02:04.92,Default,,0000,0000,0000,,그리고 함수 안에 변수를 선언하면\N이는 지역변수(local variable)로 취급합니다 Dialogue: 0,0:02:04.92,0:02:09.74,Default,,0000,0000,0000,,이는 이 함수(calcInches)안에만 존재합니다. Dialogue: 0,0:02:09.74,0:02:15.01,Default,,0000,0000,0000,,그리고 함수 밖에 있는 모든 코드들은 함수 안에 있는 \N지역변수(local variable)를 보지 못합니다 Dialogue: 0,0:02:15.01,0:02:18.82,Default,,0000,0000,0000,,이것은 단지 반환되는 것만 봅니다 Dialogue: 0,0:02:18.82,0:02:21.82,Default,,0000,0000,0000,,이는 변수는 보지 않고 값만 봅니다 Dialogue: 0,0:02:21.82,0:02:26.37,Default,,0000,0000,0000,,그러므로 totalInches를 함수 밖에서 사용하고 싶다면\N컴퓨터는 이것이 무엇인지 모르고 Dialogue: 0,0:02:26.37,0:02:31.34,Default,,0000,0000,0000,,'난 이 변수를 본 적이 없어. 정의가 되어있지 않아\N보여줄 수 없어'라고 합니다 Dialogue: 0,0:02:31.34,0:02:37.61,Default,,0000,0000,0000,,코드 밖에서 위치한 코드가 이 변수를 볼 수 있게 하는 방법이 있습니다 Dialogue: 0,0:02:37.61,0:02:42.98,Default,,0000,0000,0000,,그리고 이는 지역변수(local variable)에서 \N전역변수(global variable)로 전환할 때입니다 Dialogue: 0,0:02:42.98,0:02:50.40,Default,,0000,0000,0000,,정의를 함수 밖, 전역 범위라 불리는 곳으로 이동하면 됩니다 Dialogue: 0,0:02:50.40,0:02:58.66,Default,,0000,0000,0000,,그리고 이제는 변수를 정의하거나 선언하지 않고 \N함수 안에서 값을 매번 바꾸기만 하면 됩니다 Dialogue: 0,0:02:58.66,0:03:03.22,Default,,0000,0000,0000,,그러므로 'Total grown over life: 16'이란 것을 볼 수 있습니다 Dialogue: 0,0:03:03.22,0:03:06.65,Default,,0000,0000,0000,,전역변수(global variable)로 바꿨기 때문에 \N컴퓨터는 변수를 찾을 수 있었습니다 Dialogue: 0,0:03:06.65,0:03:10.32,Default,,0000,0000,0000,,그러나 이 값은 우리가 정말 찾고 있는 값은 아닙니다 Dialogue: 0,0:03:10.32,0:03:12.41,Default,,0000,0000,0000,,이 값은 단순히 가장 최근 값입니다\N Dialogue: 0,0:03:12.41,0:03:18.43,Default,,0000,0000,0000,,왜냐하면 이 함수를 부를 때마다 totalInches를 \N그 당시에 계산하는 값으로 인식하기 때문입니다 Dialogue: 0,0:03:18.43,0:03:23.72,Default,,0000,0000,0000,,그러므로 우리가 정말 하고 싶은 것은 \N전체 총합을 저장할 수 있는 새로운 변수를 원합니다 Dialogue: 0,0:03:23.72,0:03:29.41,Default,,0000,0000,0000,,매번 계산한 값을 계속 합해 나간 전체 범위에서의 총합 말입니다 Dialogue: 0,0:03:29.41,0:03:38.38,Default,,0000,0000,0000,,그러므로 이를 지역변수(local variable)로 다시 바꾸고 \NlifeInches란 새로운 전역변수(globa variable)를 만듭시다 Dialogue: 0,0:03:38.38,0:03:41.00,Default,,0000,0000,0000,,그리고 그것을 0에 놓고 시작합시다 Dialogue: 0,0:03:41.00,0:03:49.98,Default,,0000,0000,0000,,함수 안에서는, lifeInches +=totalInches라고 하여 \N이 전역변수에 더해 나갑니다 Dialogue: 0,0:03:49.98,0:03:53.27,Default,,0000,0000,0000,,이 함수를 부를 때마다 계산해서 나온 값을 계속 더할것 입니다 Dialogue: 0,0:03:53.27,0:03:56.40,Default,,0000,0000,0000,,그리고 이 아래쪽에 lifeInches를 놓읍시다 Dialogue: 0,0:03:56.40,0:03:59.87,Default,,0000,0000,0000,,(lifeInches, 10, 200) Dialogue: 0,0:03:59.87,0:04:03.84,Default,,0000,0000,0000,,짜잔! 인생에서 총 성장한 값이 나옵니다. Dialogue: 0,0:04:03.84,0:04:06.69,Default,,0000,0000,0000,,이 것은 제 진짜 키가 아닙니다 \N그것보단 큽니다 Dialogue: 0,0:04:06.69,0:04:10.51,Default,,0000,0000,0000,,그러나 알다시피 태어날 때 키는 \N0보다는 더 큰 값에서 시작합니다 Dialogue: 0,0:04:10.51,0:04:13.48,Default,,0000,0000,0000,,총합을 구하기 위해선\N아마도 20에서 시작해보도록 합시다 Dialogue: 0,0:04:13.48,0:04:17.26,Default,,0000,0000,0000,,여기있네요, 이게 제 키입니다 Dialogue: 0,0:04:17.26,0:04:22.07,Default,,0000,0000,0000,,좋습니다. 이제 복습을 해봅시다\NtotalInches는 흔히 지역변수(local variable)라 불리는 것입니다 Dialogue: 0,0:04:22.07,0:04:27.50,Default,,0000,0000,0000,,이 함수 밖이 아닌 안에 선언한 것을 알기에 Dialogue: 0,0:04:27.50,0:04:33.29,Default,,0000,0000,0000,,이는 여기 밖에 있는 이 코드는 \NtotalInches란 변수를 모른다는 것을 의미합니다 Dialogue: 0,0:04:33.29,0:04:37.82,Default,,0000,0000,0000,,그리고 이제 lifeInches는 전역 변수라고 불리는 것입니다 Dialogue: 0,0:04:37.82,0:04:42.84,Default,,0000,0000,0000,,왜냐하면 이의 선언을 전역 범위\N즉 함수 밖에서 선언되기 때문입니다 Dialogue: 0,0:04:42.84,0:04:47.02,Default,,0000,0000,0000,,함수와 변수를 작성할 때에는 이것을 꼭 기억하시길 바랍니다 Dialogue: 0,0:04:47.02,0:04:51.37,Default,,0000,0000,0000,,그리고 함수 안에서 사용하기 위해 지역변수를 원하는지 Dialogue: 0,0:04:51.37,0:04:54.65,Default,,0000,0000,0000,,아니면 프로그램 전체에서 쓰기 위해 \N지역변수(local variable)를 필요로 하는지 생각하시길 바랍니다 Dialogue: 0,0:04:54.65,0:04:57.68,Default,,0000,0000,0000,,그리고 이해하기 어렵다고 걱정하지 마시길 바랍니다 Dialogue: 0,0:04:57.68,0:05:01.67,Default,,0000,0000,0000,,이 개념은 특히 JavaScript 프로그래밍에서 가장 어려운 개념 중 하나입니다 Dialogue: 0,0:05:01.67,0:05:05.67,Default,,0000,0000,0000,,그리고 이 것은 꾸준히 연습할수록 느는 것 입니다