JavaScript — ინტერაქტიული ქართულენოვანი გზამკვლევი
ეს არ არის უბრალო ცნობარი — ეს არის ინტერაქტიული სასწავლო გარემო.
ყველა მაგალითს შეგიძლია შეცვალო, გაუშვა (Run) და შედეგი ნახო ადგილზევე.
გააერთიანებს Reference-ს, სასწავლო კურსსა და პრაქტიკულ ლაბორატორიას.
33 თავი
69 თემა
▶ Run & Output
</> DOM Playground
JavaScript არის პროგრამირების ენა, რომელიც ვებ-გვერდებს ცოცხალსა და ინტერაქტიულს ხდის. HTML არის სტრუქტურა, CSS — გარეგნობა, JavaScript კი — ქცევა და ლოგიკა.
დავიწყოთ კლასიკით — „Hello World". console.log() ბეჭდავს მნიშვნელობას კონსოლში (აქ — Output პანელში).
ცვლადი არის „ყუთი", რომელშიც მნიშვნელობას ვინახავთ სახელის ქვეშ. JS-ში სამი გზაა: var (ძველი), let და const (თანამედროვე).
JavaScript-ში მონაცემები იყოფა primitive (მარტივი) და reference (რთული, ობიექტური) ტიპებად. typeof ოპერატორი გვიჩვენებს ტიპს.
ოპერატორები ასრულებენ მოქმედებებს მნიშვნელობებზე: არითმეტიკულს, მინიჭებას, შედარებასა და ლოგიკურს.
ხშირად საჭიროა მნიშვნელობის ერთი ტიპიდან მეორეში გადაყვანა — მაგ. ფორმის ტექსტი რიცხვად. JS-ში ეს ხდება ცხადი (manual) ან არაცხადი (implicit) გზით.
პირობები საშუალებას აძლევენ პროგრამას გადაწყვეტილების მიღებას — კოდის სხვადასხვა ნაწილი შესრულდეს პირობის მიხედვით.
ციკლი იმეორებს კოდს მრავალჯერ. JS-ში არსებობს for, while, do...while, for...of და for...in.
ფუნქცია არის მრავალჯერ გამოყენებადი კოდის ბლოკი, რომელიც იღებს მონაცემს (პარამეტრებს) და აბრუნებს შედეგს. ფუნქციები კოდს ორგანიზებულსა და მოკლეს ხდიან.
Scope განსაზღვრავს, სად არის ცვლადი ხელმისაწვდომი. Closure კი ფუნქციის უნარია, „დაიმახსოვროს" გარემო, რომელშიც შეიქმნა.
მასივი არის მნიშვნელობების დალაგებული სია ერთ ცვლადში. ინდექსი იწყება 0-დან. მასივებს აქვთ უამრავი ძლიერი მეთოდი მონაცემთა დასამუშავებლად.
ობიექტი ინახავს მონაცემს key: value წყვილებად. ის რეალური ცნებების მოდელირების მთავარი საშუალებაა (მომხმარებელი, პროდუქტი, მანქანა).
სტრიქონი არის ტექსტი. JS-ს აქვს მრავალი მეთოდი ტექსტის დასამუშავებლად — ძებნა, ჩანაცვლება, დაყოფა, რეგისტრის ცვლა.
JavaScript-ში ერთი რიცხვითი ტიპია — number (მთელიც და ათწილადიც). Math ობიექტი იძლევა მათემატიკურ ფუნქციებს.
Date ობიექტი მუშაობს თარიღებსა და დროსთან — მიმდინარე დროის მიღება, ფორმატირება, გამოთვლები.
DOM (Document Object Model) არის HTML გვერდის ხის სტრუქტურის წარმოდგენა, რომელსაც JavaScript კითხულობს და ცვლის. ეს არის ხიდი JS-სა და გვერდს შორის. ქვემოთ ცოცხალი DOM Playground ნახე!
ელემენტის პოვნის შემდეგ მისი შინაარსის, სტილისა და სტრუქტურის შეცვლა შეგვიძლია — სწორედ ეს ხდის გვერდს დინამიკურს.
მოვლენა (event) არის მომხმარებლის ქმედება — დაკლიკება, აკრეფა, გადატარება. addEventListener-ით ვუსმენთ მათ და ვრეაგირებთ.
handler ფუნქცია იღებს event ობიექტს, რომელიც შეიცავს ინფორმაციას მოვლენის შესახებ და მართვის მეთოდებს.
localStorage და sessionStorage საშუალებას იძლევიან მონაცემი ბრაუზერში შეინახო. localStorage მუდმივია, sessionStorage — მხოლოდ ჩანართის დახურვამდე.
JSON (JavaScript Object Notation) არის მონაცემთა გაცვლის ფორმატი — ტექსტი, რომელიც ჰგავს JS ობიექტს. API-ებთან მუშაობის სტანდარტია.
შეცდომები გარდაუვალია. try/catch/finally საშუალებას იძლევა პროგრამა არ „ჩამოვარდეს", არამედ შეცდომა დახელოვნებულად დაამუშაოს.
ასინქრონული კოდი საშუალებას იძლევა ხანგრძლივი ოპერაციები (ქსელი, ტაიმერი) შესრულდეს გვერდის გაყინვის გარეშე. ეს JS-ის ერთ-ერთი ყველაზე მნიშვნელოვანი თემაა.
fetch() არის თანამედროვე გზა სერვერთან მონაცემის გასაცვლელად (HTTP requests). აბრუნებს Promise-ს და async/await-თან მშვენივრად მუშაობს.
მოდულები საშუალებას იძლევიან კოდი ფაილებად დაყო და ერთმანეთს გაუზიარო export/import-ით. ეს კოდს ორგანიზებულსა და მრავალჯერ გამოყენებადს ხდის.
კლასი არის „შაბლონი" ობიექტების შესაქმნელად. ის OOP-ის (ობიექტზე ორიენტირებული პროგრამირების) საფუძველია JS-ში.
ობიექტზე ორიენტირებული პროგრამირების 4 ბურჯი: Encapsulation, Inheritance, Polymorphism, Abstraction.
ES6+ სინტაქსი, რომელიც კოდს მოკლეს, წაკითხვადსა და უსაფრთხოს ხდის: destructuring, spread, optional chaining, nullish coalescing, template literals.
ბრაუზერი იძლევა ჩაშენებულ API-ებს: navigator, Geolocation, Clipboard, URL, History. (ეს მაგალითები რეალურ ბრაუზერშია გასაშვები — sandbox preview-ში ნაწილი შეზღუდულია.)
ფრონტენდის უსაფრთხოების საფუძვლები — განსაკუთრებით XSS (Cross-Site Scripting) და DOM injection-ისგან დაცვა.
სუფთა, წაკითხვადი და მხარდასაჭერი კოდის წერის პრინციპები — სახელდება, ორგანიზება, თანმიმდევრულობა.