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