1 00:00:00,764 --> 00:00:03,070 ახლა, როცა უკვე დაძლიეთ ფუნქციის საფუძვლები 2 00:00:03,070 --> 00:00:07,396 მინდა გესაუბროთ ოდნავ რთულ საკითხზე. 3 00:00:07,396 --> 00:00:10,984 განსხვავებაზე ლოკალურსა და გლობალურ ცვლადებს შორის. 4 00:00:11,374 --> 00:00:14,179 შეიძლება ეს ტერმინები ჯერ არაფერს გეუბნებოდეთ. 5 00:00:14,179 --> 00:00:16,364 მაგალითით დავიწყოთ. 6 00:00:16,364 --> 00:00:18,110 ეს პროგრამა გავაკეთე 7 00:00:18,110 --> 00:00:20,346 რათა მეჩვენებინა რამდენი ინჩით გავიზარდე ბავშვობაში. 8 00:00:20,506 --> 00:00:22,087 რადგან ადამიანები განსხვავებული ტემპით იზრდებიან, 9 00:00:22,087 --> 00:00:24,458 მე მოვიფიქრე ფუნქცია "calcInches", 10 00:00:24,458 --> 00:00:27,264 სადაც დავწერე "startAge", "endAge" 11 00:00:27,264 --> 00:00:29,160 და "inchesPerYear". 12 00:00:29,700 --> 00:00:31,757 შემდეგ ის გამოითვლიდა 13 00:00:31,757 --> 00:00:34,294 მთლიანად რამდენი ინჩით გავიზარდეთ დროის მონაკვეთში. 14 00:00:34,874 --> 00:00:36,932 ...და დაუბრუნებდა იმას ვინც გამოიძახა. 15 00:00:37,362 --> 00:00:40,093 ხედავთ, რომ ნულიდან რვამდე 16 00:00:40,093 --> 00:00:44,354 ვიძახებ "calcInches" და ვწერ ნულს, რვას და 2.5-ს. 17 00:00:44,354 --> 00:00:47,717 რადგან წელიწადში დაახლოებით 2.5-ით ვიზრდებოდი. 18 00:00:48,297 --> 00:00:51,904 როგორც ხედავთ ითვლის და შედეგად 20-ს გვაძლევს. 19 00:00:52,171 --> 00:00:57,939 შემდეგ ვიძახებ რვიდან 16-მდე და ვაძლევ რვას 16-ს და ორს. 20 00:00:57,939 --> 00:01:01,133 რადგან იმდენად არ ვიზრდებოდი და ხედავთ, რომ შედეგად 16-ს გვაძლევს. 21 00:01:01,913 --> 00:01:05,312 კარგი ჩანს, მაგრამ ახლა 22 00:01:05,312 --> 00:01:08,071 მინდა ვაჩვენო მთლიანად რამდენით გავიზარდე ბავშვობაში. 23 00:01:08,771 --> 00:01:13,569 როგორ ვაკეთებ ამას. შემიძლია ჩემ ფუნქციას შევხედო 24 00:01:13,639 --> 00:01:16,947 და ვიფიქრო რა მნიშვნელობები მაქვს აქ. 25 00:01:17,045 --> 00:01:19,922 მაქვს თუ არა რაიმე, რაც მთლიან ინჩებს გამოსახავს? 26 00:01:20,582 --> 00:01:26,038 მაქვს "totalInches" ცვლადი "calcInches" ფუნქციაში 27 00:01:26,038 --> 00:01:30,560 შემიძლია გავაწარმოო, ვნახოთ რას მომცემს. 28 00:01:30,560 --> 00:01:36,440 დავწეროთ "text", "totalInches", 29 00:01:36,440 --> 00:01:38,455 ვნახოთ, რა მოხდება. 30 00:01:38,455 --> 00:01:43,032 "Oh noes" ბიჭი გვეუბნება, რომ პრობლემაა. 31 00:01:43,032 --> 00:01:45,556 "totalInches" არ არის განსაზღვრული. 32 00:01:45,556 --> 00:01:47,624 უცნაურია, რადგან 33 00:01:47,624 --> 00:01:51,442 აი აქ განვსაზღვრეთ totalInches. 34 00:01:51,442 --> 00:01:53,823 var "totalInches" უდრის-- 35 00:01:53,823 --> 00:01:58,724 პრობლემა ისაა, რომ totalInches ფუნქციის შიგნით განვსაზღვრეთ. 36 00:01:58,724 --> 00:02:01,104 ამ სტროფზე. 37 00:02:01,104 --> 00:02:03,234 როდესაც ცვლადს ფუნქციის შიგნით ვსაზღვრავთ, 38 00:02:03,234 --> 00:02:06,076 ის ლოკალურ ცვლადად მიიჩნევა. 39 00:02:06,076 --> 00:02:09,076 მხოლოდ ამ ფუნქციის შიგნით ცხოვრობს. 40 00:02:09,076 --> 00:02:12,945 ფუნქციის გარეთ რაცაა 41 00:02:12,945 --> 00:02:15,794 ვერ ხედავს ფუნქციის შიგნითა ლოკალურ ცვლადებს. 42 00:02:15,794 --> 00:02:18,194 მხოლოდ იმას ხედავს, რაც ბრუნდება. 43 00:02:18,194 --> 00:02:21,224 მხოლოდ ამ შედეგს ხედავს, არა ცვლადს. 44 00:02:21,224 --> 00:02:24,767 როდესაც ვცდილობთ totalInches ფუნქციის გარეთ გამოყენებას, 45 00:02:24,767 --> 00:02:26,250 მან არ იცის ეს რაარის 46 00:02:26,250 --> 00:02:28,596 და ამბობს, რომ ეს ცვლადი აქამდე არ უნახავს. 47 00:02:28,596 --> 00:02:32,192 იგი არ არის განსაზღვრული. 48 00:02:32,202 --> 00:02:34,610 გვაქვს გზა, რის მეშვეობითაც, 49 00:02:34,610 --> 00:02:37,198 გარე კოდი შეძლებს ამ ცვლადის დანახვას. 50 00:02:37,398 --> 00:02:42,487 თუ ლოკალურიდან გობალურ ცვლადად გარდავქმნით. 51 00:02:42,736 --> 00:02:46,879 ეს შეგვიძლია განსაზღვრის ფუნქციის გარეთ გატანით. 52 00:02:47,539 --> 00:02:50,042 იმაში, რასაც გლობალური ჰორიზონტი ჰქვია. 53 00:02:51,252 --> 00:02:54,322 ფუნქციის შიგნით 54 00:02:54,322 --> 00:02:58,342 მის მნიშვნელობას ვცვლით ყოველ ჯერზე, არ ვსაზღვრავთ. 55 00:02:58,632 --> 00:03:02,484 როგორც ხედავთ, მთლიანი ზრდა სიცოცხლის მანძილზე 16-ს უდრის. 56 00:03:02,756 --> 00:03:06,158 მან იპოვა ცვლადი, რადგან გლობალურ ცვლადად გარდავქმენით. 57 00:03:06,648 --> 00:03:09,515 მაგრამ ჩვენ სხვა მნიშვნელობას ვეძებთ. 58 00:03:09,625 --> 00:03:11,552 ეს ყველაზე ახალი მნიშვნელობაა. 59 00:03:11,552 --> 00:03:14,108 რადგან, ყოველ ჯერზე, როდესაც ამ ფუნქციას ვიძახებთ 60 00:03:14,118 --> 00:03:17,794 totalInches აყენებს იმაზე, რასაც იმ შემთხვევისთვის ითვლის. 61 00:03:18,714 --> 00:03:21,930 გვინდა ახალი ცვლადი, 62 00:03:21,930 --> 00:03:24,662 რომელიც დაიმახსოვრებს მხოლოდ 63 00:03:24,662 --> 00:03:28,464 მთლიან totalInches, რომელსაც ყოველ ჯერზე ვამატებთ. 64 00:03:29,228 --> 00:03:32,563 მოდით, ეს ლოკალური ცვლადი გავხადოთ 65 00:03:33,663 --> 00:03:37,068 და შევქმნათ ახალი გლობალური ცვლადი. 66 00:03:37,068 --> 00:03:39,864 რომელსაც "lifeInches"-ს დავარქმევთ. 67 00:03:39,864 --> 00:03:42,381 ნულზე დავიწყებთ. 68 00:03:42,381 --> 00:03:45,381 ფუნქციის შიგნით, ამ გლობალურ ცვლადს დავამატებთ 69 00:03:45,381 --> 00:03:49,478 --"lifeInches" პლუს უდრის "totalInches"-- 70 00:03:49,478 --> 00:03:52,986 რასაც გამოთვლით ამ ფუნქციის ყოველ გამოძახებაზე, 71 00:03:52,986 --> 00:03:56,403 დავამატებთ "lifeInches"-ს გლობალურ ცვლადს. 72 00:03:56,403 --> 00:03:59,621 ბოლოში ვაჩვენებთ "lifeInches"-ს. 73 00:03:59,639 --> 00:04:02,998 სრული ზრდა სიცოცხლის მანძილზე. 74 00:04:03,538 --> 00:04:06,141 ეს ჩემი ნამდვილი სიმაღლე არ არის. 75 00:04:06,141 --> 00:04:07,595 ამაზე მაღალი ვარ, მაგრამ 76 00:04:07,595 --> 00:04:09,859 ეს იმიტომაა, რომ 77 00:04:09,859 --> 00:04:11,744 ბადებისას ჩვენი სიმაღლე ნულზე მაღალია. 78 00:04:11,839 --> 00:04:14,284 სრული თუ მინდა, იქნებ 20-ზე დამეწყო. 79 00:04:14,284 --> 00:04:17,265 აი, ჩემი სიმაღლეც. 80 00:04:17,265 --> 00:04:19,676 გადავხედოთ, 81 00:04:19,676 --> 00:04:22,157 "totalInches" ვეძახით ლოკალურ ცვლადს. 82 00:04:22,157 --> 00:04:25,844 ეს ვიცით, რადგან ფუნქციის შიგნით ვხედავთ მის განსაზღვრებას 83 00:04:25,844 --> 00:04:27,781 და არა ფუნქციის გარეთ. 84 00:04:28,521 --> 00:04:30,552 ეს ნიშნავს, რომ 85 00:04:30,552 --> 00:04:32,673 ამ გარეთა კოდმა არ იცის ამ ცვლადის შესახებ, 86 00:04:32,673 --> 00:04:34,813 "totalInches"-ს რომ ვეძახით. 87 00:04:34,813 --> 00:04:37,656 "lifeInches"-ს ვუწოდებთ გლობალურ ცვლადს. 88 00:04:37,656 --> 00:04:41,271 ეს ვიცით, რადგან მის განსაზღვრებას ფუნქციის გარეთ ვხედავთ. 89 00:04:41,271 --> 00:04:43,046 გლობალურ ზონაში. 90 00:04:43,586 --> 00:04:45,070 სცადეთ გახსოვდეთ ეს, 91 00:04:45,070 --> 00:04:47,158 როდესაც ფუნქციებსა და ცვლადებს წერთ. 92 00:04:47,158 --> 00:04:51,874 და დაფიქრდით ლოკალური ცვლადი გინდათ, მხოლოდ ფუნქციამ რომ გამოიყენოს 93 00:04:51,874 --> 00:04:54,830 თუ გლობალური, მთელი პროგრამისთვის. 94 00:04:54,830 --> 00:04:57,354 არაუშავს თუ რთულია ამის გაგება. 95 00:04:57,354 --> 00:04:59,927 ეს ერთ-ერთი ყველაზე დამაბნეველი ცნებაა პროგრამირებაში. 96 00:04:59,927 --> 00:05:01,730 განსაკუთრებით JavaScript-ში. 97 00:05:01,730 --> 00:05:04,734 თუ ივარჯიშებთ, უკეთ გამოგივათ.