0:00:00.764,0:00:03.070 ახლა, როცა უკვე [br]დაძლიეთ ფუნქციის საფუძვლები 0:00:03.070,0:00:07.396 მინდა გესაუბროთ ოდნავ რთულ საკითხზე. 0:00:07.396,0:00:10.984 განსხვავებაზე ლოკალურსა და [br]გლობალურ ცვლადებს შორის. 0:00:11.374,0:00:14.179 შეიძლება ეს ტერმინები [br]ჯერ არაფერს გეუბნებოდეთ. 0:00:14.179,0:00:16.364 მაგალითით დავიწყოთ. 0:00:16.364,0:00:18.110 ეს პროგრამა გავაკეთე 0:00:18.110,0:00:20.346 რათა მეჩვენებინა [br]რამდენი ინჩით გავიზარდე ბავშვობაში. 0:00:20.506,0:00:22.087 რადგან ადამიანები [br]განსხვავებული ტემპით იზრდებიან, 0:00:22.087,0:00:24.458 მე მოვიფიქრე ფუნქცია "calcInches", 0:00:24.458,0:00:27.264 სადაც დავწერე "startAge", "endAge" 0:00:27.264,0:00:29.160 და "inchesPerYear". 0:00:29.700,0:00:31.757 შემდეგ ის გამოითვლიდა 0:00:31.757,0:00:34.294 მთლიანად რამდენი [br]ინჩით გავიზარდეთ დროის მონაკვეთში. 0:00:34.874,0:00:36.932 ...და დაუბრუნებდა იმას ვინც გამოიძახა. 0:00:37.362,0:00:40.093 ხედავთ, რომ ნულიდან რვამდე 0:00:40.093,0:00:44.354 ვიძახებ "calcInches" [br]და ვწერ ნულს, რვას და 2.5-ს. 0:00:44.354,0:00:47.717 რადგან წელიწადში [br]დაახლოებით 2.5-ით ვიზრდებოდი. 0:00:48.297,0:00:51.904 როგორც ხედავთ [br]ითვლის და შედეგად 20-ს გვაძლევს. 0:00:52.171,0:00:57.939 შემდეგ ვიძახებ რვიდან [br]16-მდე და ვაძლევ რვას 16-ს და ორს. 0:00:57.939,0:01:01.133 რადგან იმდენად არ ვიზრდებოდი [br]და ხედავთ, რომ შედეგად 16-ს გვაძლევს. 0:01:01.913,0:01:05.312 კარგი ჩანს, მაგრამ ახლა 0:01:05.312,0:01:08.071 მინდა ვაჩვენო [br]მთლიანად რამდენით გავიზარდე ბავშვობაში. 0:01:08.771,0:01:13.569 როგორ ვაკეთებ ამას.[br]შემიძლია ჩემ ფუნქციას შევხედო 0:01:13.639,0:01:16.947 და ვიფიქრო [br]რა მნიშვნელობები მაქვს აქ. 0:01:17.045,0:01:19.922 მაქვს თუ არა რაიმე, [br]რაც მთლიან ინჩებს გამოსახავს? 0:01:20.582,0:01:26.038 მაქვს "totalInches" [br]ცვლადი "calcInches" ფუნქციაში 0:01:26.038,0:01:30.560 შემიძლია გავაწარმოო, ვნახოთ რას მომცემს. 0:01:30.560,0:01:36.440 დავწეროთ "text", "totalInches", 0:01:36.440,0:01:38.455 ვნახოთ, რა მოხდება. 0:01:38.455,0:01:43.032 "Oh noes" ბიჭი გვეუბნება, რომ პრობლემაა. 0:01:43.032,0:01:45.556 "totalInches" არ არის განსაზღვრული. 0:01:45.556,0:01:47.624 უცნაურია, რადგან 0:01:47.624,0:01:51.442 აი აქ განვსაზღვრეთ totalInches. 0:01:51.442,0:01:53.823 var "totalInches" უდრის-- 0:01:53.823,0:01:58.724 პრობლემა ისაა, რომ [br]totalInches ფუნქციის შიგნით განვსაზღვრეთ. 0:01:58.724,0:02:01.104 ამ სტროფზე. 0:02:01.104,0:02:03.234 როდესაც ცვლადს [br]ფუნქციის შიგნით ვსაზღვრავთ, 0:02:03.234,0:02:06.076 ის ლოკალურ ცვლადად მიიჩნევა. 0:02:06.076,0:02:09.076 მხოლოდ ამ ფუნქციის შიგნით ცხოვრობს. 0:02:09.076,0:02:12.945 ფუნქციის გარეთ რაცაა 0:02:12.945,0:02:15.794 ვერ ხედავს ფუნქციის [br]შიგნითა ლოკალურ ცვლადებს. 0:02:15.794,0:02:18.194 მხოლოდ იმას ხედავს, რაც ბრუნდება. 0:02:18.194,0:02:21.224 მხოლოდ ამ შედეგს ხედავს, არა ცვლადს. 0:02:21.224,0:02:24.767 როდესაც ვცდილობთ [br]totalInches ფუნქციის გარეთ გამოყენებას, 0:02:24.767,0:02:26.250 მან არ იცის ეს რაარის 0:02:26.250,0:02:28.596 და ამბობს, რომ [br]ეს ცვლადი აქამდე არ უნახავს. 0:02:28.596,0:02:32.192 იგი არ არის განსაზღვრული. 0:02:32.202,0:02:34.610 გვაქვს გზა, რის მეშვეობითაც, 0:02:34.610,0:02:37.198 გარე კოდი [br]შეძლებს ამ ცვლადის დანახვას. 0:02:37.398,0:02:42.487 თუ ლოკალურიდან [br]გობალურ ცვლადად გარდავქმნით. 0:02:42.736,0:02:46.879 ეს შეგვიძლია [br]განსაზღვრის ფუნქციის გარეთ გატანით. 0:02:47.539,0:02:50.042 იმაში, რასაც [br]გლობალური ჰორიზონტი ჰქვია. 0:02:51.252,0:02:54.322 ფუნქციის შიგნით 0:02:54.322,0:02:58.342 მის მნიშვნელობას [br]ვცვლით ყოველ ჯერზე, არ ვსაზღვრავთ. 0:02:58.632,0:03:02.484 როგორც ხედავთ, მთლიანი [br]ზრდა სიცოცხლის მანძილზე 16-ს უდრის. 0:03:02.756,0:03:06.158 მან იპოვა ცვლადი, რადგან [br]გლობალურ ცვლადად გარდავქმენით. 0:03:06.648,0:03:09.515 მაგრამ ჩვენ სხვა მნიშვნელობას ვეძებთ. 0:03:09.625,0:03:11.552 ეს ყველაზე ახალი მნიშვნელობაა. 0:03:11.552,0:03:14.108 რადგან, ყოველ [br]ჯერზე, როდესაც ამ ფუნქციას ვიძახებთ 0:03:14.118,0:03:17.794 totalInches აყენებს იმაზე, [br]რასაც იმ შემთხვევისთვის ითვლის. 0:03:18.714,0:03:21.930 გვინდა ახალი ცვლადი, 0:03:21.930,0:03:24.662 რომელიც დაიმახსოვრებს მხოლოდ 0:03:24.662,0:03:28.464 მთლიან totalInches, [br]რომელსაც ყოველ ჯერზე ვამატებთ. 0:03:29.228,0:03:32.563 მოდით, ეს ლოკალური ცვლადი გავხადოთ 0:03:33.663,0:03:37.068 და შევქმნათ ახალი გლობალური ცვლადი. 0:03:37.068,0:03:39.864 რომელსაც "lifeInches"-ს დავარქმევთ. 0:03:39.864,0:03:42.381 ნულზე დავიწყებთ. 0:03:42.381,0:03:45.381 ფუნქციის შიგნით, ამ [br]გლობალურ ცვლადს დავამატებთ 0:03:45.381,0:03:49.478 --"lifeInches" პლუს უდრის "totalInches"-- 0:03:49.478,0:03:52.986 რასაც გამოთვლით [br]ამ ფუნქციის ყოველ გამოძახებაზე, 0:03:52.986,0:03:56.403 დავამატებთ [br]"lifeInches"-ს გლობალურ ცვლადს. 0:03:56.403,0:03:59.621 ბოლოში ვაჩვენებთ "lifeInches"-ს. 0:03:59.639,0:04:02.998 სრული ზრდა სიცოცხლის მანძილზე. 0:04:03.538,0:04:06.141 ეს ჩემი ნამდვილი სიმაღლე არ არის. 0:04:06.141,0:04:07.595 ამაზე მაღალი ვარ, მაგრამ 0:04:07.595,0:04:09.859 ეს იმიტომაა, რომ 0:04:09.859,0:04:11.744 ბადებისას ჩვენი სიმაღლე ნულზე მაღალია. 0:04:11.839,0:04:14.284 სრული თუ მინდა, იქნებ 20-ზე დამეწყო. 0:04:14.284,0:04:17.265 აი, ჩემი სიმაღლეც. 0:04:17.265,0:04:19.676 გადავხედოთ, 0:04:19.676,0:04:22.157 "totalInches" ვეძახით ლოკალურ ცვლადს. 0:04:22.157,0:04:25.844 ეს ვიცით, რადგან [br]ფუნქციის შიგნით ვხედავთ მის განსაზღვრებას 0:04:25.844,0:04:27.781 და არა ფუნქციის გარეთ. 0:04:28.521,0:04:30.552 ეს ნიშნავს, რომ 0:04:30.552,0:04:32.673 ამ გარეთა კოდმა [br]არ იცის ამ ცვლადის შესახებ, 0:04:32.673,0:04:34.813 "totalInches"-ს რომ ვეძახით. 0:04:34.813,0:04:37.656 "lifeInches"-ს ვუწოდებთ გლობალურ ცვლადს. 0:04:37.656,0:04:41.271 ეს ვიცით, რადგან მის [br]განსაზღვრებას ფუნქციის გარეთ ვხედავთ. 0:04:41.271,0:04:43.046 გლობალურ ზონაში. 0:04:43.586,0:04:45.070 სცადეთ გახსოვდეთ ეს, 0:04:45.070,0:04:47.158 როდესაც ფუნქციებსა და ცვლადებს წერთ. 0:04:47.158,0:04:51.874 და დაფიქრდით ლოკალური ცვლადი [br]გინდათ, მხოლოდ ფუნქციამ რომ გამოიყენოს 0:04:51.874,0:04:54.830 თუ გლობალური, მთელი პროგრამისთვის. 0:04:54.830,0:04:57.354 არაუშავს თუ რთულია ამის გაგება. 0:04:57.354,0:04:59.927 ეს ერთ-ერთი ყველაზე [br]დამაბნეველი ცნებაა პროგრამირებაში. 0:04:59.927,0:05:01.730 განსაკუთრებით JavaScript-ში. 0:05:01.730,0:05:04.734 თუ ივარჯიშებთ, უკეთ გამოგივათ.