-
ახლა, როცა უკვე
დაძლიეთ ფუნქციის საფუძვლები
-
მინდა გესაუბროთ ოდნავ რთულ საკითხზე.
-
განსხვავებაზე ლოკალურსა და
გლობალურ ცვლადებს შორის.
-
შეიძლება ეს ტერმინები
ჯერ არაფერს გეუბნებოდეთ.
-
მაგალითით დავიწყოთ.
-
ეს პროგრამა გავაკეთე
-
რათა მეჩვენებინა
რამდენი ინჩით გავიზარდე ბავშვობაში.
-
რადგან ადამიანები
განსხვავებული ტემპით იზრდებიან,
-
მე მოვიფიქრე ფუნქცია "calcInches",
-
სადაც დავწერე "startAge", "endAge"
-
და "inchesPerYear".
-
შემდეგ ის გამოითვლიდა
-
მთლიანად რამდენი
ინჩით გავიზარდეთ დროის მონაკვეთში.
-
...და დაუბრუნებდა იმას ვინც გამოიძახა.
-
ხედავთ, რომ ნულიდან რვამდე
-
ვიძახებ "calcInches"
და ვწერ ნულს, რვას და 2.5-ს.
-
რადგან წელიწადში
დაახლოებით 2.5-ით ვიზრდებოდი.
-
როგორც ხედავთ
ითვლის და შედეგად 20-ს გვაძლევს.
-
შემდეგ ვიძახებ რვიდან
16-მდე და ვაძლევ რვას 16-ს და ორს.
-
რადგან იმდენად არ ვიზრდებოდი
და ხედავთ, რომ შედეგად 16-ს გვაძლევს.
-
კარგი ჩანს, მაგრამ ახლა
-
მინდა ვაჩვენო
მთლიანად რამდენით გავიზარდე ბავშვობაში.
-
როგორ ვაკეთებ ამას.
შემიძლია ჩემ ფუნქციას შევხედო
-
და ვიფიქრო
რა მნიშვნელობები მაქვს აქ.
-
მაქვს თუ არა რაიმე,
რაც მთლიან ინჩებს გამოსახავს?
-
მაქვს "totalInches"
ცვლადი "calcInches" ფუნქციაში
-
შემიძლია გავაწარმოო, ვნახოთ რას მომცემს.
-
დავწეროთ "text", "totalInches",
-
ვნახოთ, რა მოხდება.
-
"Oh noes" ბიჭი გვეუბნება, რომ პრობლემაა.
-
"totalInches" არ არის განსაზღვრული.
-
უცნაურია, რადგან
-
აი აქ განვსაზღვრეთ totalInches.
-
var "totalInches" უდრის--
-
პრობლემა ისაა, რომ
totalInches ფუნქციის შიგნით განვსაზღვრეთ.
-
ამ სტროფზე.
-
როდესაც ცვლადს
ფუნქციის შიგნით ვსაზღვრავთ,
-
ის ლოკალურ ცვლადად მიიჩნევა.
-
მხოლოდ ამ ფუნქციის შიგნით ცხოვრობს.
-
ფუნქციის გარეთ რაცაა
-
ვერ ხედავს ფუნქციის
შიგნითა ლოკალურ ცვლადებს.
-
მხოლოდ იმას ხედავს, რაც ბრუნდება.
-
მხოლოდ ამ შედეგს ხედავს, არა ცვლადს.
-
როდესაც ვცდილობთ
totalInches ფუნქციის გარეთ გამოყენებას,
-
მან არ იცის ეს რაარის
-
და ამბობს, რომ
ეს ცვლადი აქამდე არ უნახავს.
-
იგი არ არის განსაზღვრული.
-
გვაქვს გზა, რის მეშვეობითაც,
-
გარე კოდი
შეძლებს ამ ცვლადის დანახვას.
-
თუ ლოკალურიდან
გობალურ ცვლადად გარდავქმნით.
-
ეს შეგვიძლია
განსაზღვრის ფუნქციის გარეთ გატანით.
-
იმაში, რასაც
გლობალური ჰორიზონტი ჰქვია.
-
ფუნქციის შიგნით
-
მის მნიშვნელობას
ვცვლით ყოველ ჯერზე, არ ვსაზღვრავთ.
-
როგორც ხედავთ, მთლიანი
ზრდა სიცოცხლის მანძილზე 16-ს უდრის.
-
მან იპოვა ცვლადი, რადგან
გლობალურ ცვლადად გარდავქმენით.
-
მაგრამ ჩვენ სხვა მნიშვნელობას ვეძებთ.
-
ეს ყველაზე ახალი მნიშვნელობაა.
-
რადგან, ყოველ
ჯერზე, როდესაც ამ ფუნქციას ვიძახებთ
-
totalInches აყენებს იმაზე,
რასაც იმ შემთხვევისთვის ითვლის.
-
გვინდა ახალი ცვლადი,
-
რომელიც დაიმახსოვრებს მხოლოდ
-
მთლიან totalInches,
რომელსაც ყოველ ჯერზე ვამატებთ.
-
მოდით, ეს ლოკალური ცვლადი გავხადოთ
-
და შევქმნათ ახალი გლობალური ცვლადი.
-
რომელსაც "lifeInches"-ს დავარქმევთ.
-
ნულზე დავიწყებთ.
-
ფუნქციის შიგნით, ამ
გლობალურ ცვლადს დავამატებთ
-
--"lifeInches" პლუს უდრის "totalInches"--
-
რასაც გამოთვლით
ამ ფუნქციის ყოველ გამოძახებაზე,
-
დავამატებთ
"lifeInches"-ს გლობალურ ცვლადს.
-
ბოლოში ვაჩვენებთ "lifeInches"-ს.
-
სრული ზრდა სიცოცხლის მანძილზე.
-
ეს ჩემი ნამდვილი სიმაღლე არ არის.
-
ამაზე მაღალი ვარ, მაგრამ
-
ეს იმიტომაა, რომ
-
ბადებისას ჩვენი სიმაღლე ნულზე მაღალია.
-
სრული თუ მინდა, იქნებ 20-ზე დამეწყო.
-
აი, ჩემი სიმაღლეც.
-
გადავხედოთ,
-
"totalInches" ვეძახით ლოკალურ ცვლადს.
-
ეს ვიცით, რადგან
ფუნქციის შიგნით ვხედავთ მის განსაზღვრებას
-
და არა ფუნქციის გარეთ.
-
ეს ნიშნავს, რომ
-
ამ გარეთა კოდმა
არ იცის ამ ცვლადის შესახებ,
-
"totalInches"-ს რომ ვეძახით.
-
"lifeInches"-ს ვუწოდებთ გლობალურ ცვლადს.
-
ეს ვიცით, რადგან მის
განსაზღვრებას ფუნქციის გარეთ ვხედავთ.
-
გლობალურ ზონაში.
-
სცადეთ გახსოვდეთ ეს,
-
როდესაც ფუნქციებსა და ცვლადებს წერთ.
-
და დაფიქრდით ლოკალური ცვლადი
გინდათ, მხოლოდ ფუნქციამ რომ გამოიყენოს
-
თუ გლობალური, მთელი პროგრამისთვის.
-
არაუშავს თუ რთულია ამის გაგება.
-
ეს ერთ-ერთი ყველაზე
დამაბნეველი ცნებაა პროგრამირებაში.
-
განსაკუთრებით JavaScript-ში.
-
თუ ივარჯიშებთ, უკეთ გამოგივათ.