SlideShare a Scribd company logo
Вступ до
JavaScript
Для чого використовують JavaScript?
• Для попередньої перевірки введених
користувачем даних;
• Для додавання інтерактивності до веб-
сторінок:
– складні контроли (DOM, events);
– AJAX;
– реклама, спам;
What is the world’s most popular language?
JavaScript
Перше місце за “незрозумілість і
неправильне використання“
JavaScript
JavaScript
Mocha
LiveScript
JScript – Microsoft (та ж сама історія що і з J++)
ECMAScript
JavaScript. Слово Java в назві мови не
має нічого спільного з мовою Java від Sun
Sun Netscape
Hot Java (95)
Bad Parts
Мова містить “погані конструкції”, використання
яких може перетворити читання чужого коду в
справжній жах. Деякі з них ви просто змушені
використовувати, напр. оператор +
• Microsoft and
Bad first implementations
• Перші реалізації мови JavaScript містили купу помилок
• Додайте до цього незліченні баги в прадавніх бравзерах, і
ви зрозумієте за що так зненавиділи JavaScript
For newbie and for guru
JavaScript одночасно є
дуже простою та дуже складною
Не Java та не C#
• Не має компілятора;
• Не має строгої типізації;
• Не має поняття “клас” (тип);
• Не має класичного наслідування;
• Не має virtual чи abstract методів;
• Не має overloading методів;
…
JavaScript: ключові ідеї
• “Є текст програми – виконуємо його”;
• Нестрога типізація;
• Об’єкти – динамічні контейнери;
• Прототиповане наслідування;
• Лямбда (lambda) [функції як об'єкти першого рівня];
• Зв’язування через глобальні змінні;
global
jQuery
Використання бібліотек без хорошого розуміння мови
Базові типи
 Примітивні типи даних
var i = 0; // number
var s = "Hello, world"; // string
var locked = false; // boolean
var data = new Object(); // object
var f = function() { return 1; } // function
 Спеціальні “значення”
null
undefined
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
var s = "Hello, world!";
alert(s);
alert(typeof s); // string
</script>
</body>
</html>
alert(str)
Numbers
• Єдиний числовий тип
– Нема int, long, byte і т.д.
• Number - 64-бітне число з плаваючою
крапкою (double)
• Number “хворіє” тими ж проблемами, що і
double в C++, C# чи Java:
0.1 + 0.2 == 0.30000000000000004
• for (i = 0; i < 10; i++) {} - OK
NaN
• NaN – Not a Number
• Результат помилкової арифметичної операції
<script type="text/javascript">
alert(typeof 1); // number
alert(typeof NaN); // number (!)
alert(5 - "four"); // NaN
alert(NaN == NaN); // false (!)
alert(isNaN(5 - "four")); // true
</script>
String
• Стрічка є послідовністю 16-ти бітних символів;
• Немає окремого символьного типу (char);
– Символ “емулюється” стрічкою з довжиною 1;
• Стрічки незмінні (immutable);
• Стрічковий літерал можна записати з
використанням як одинарних так і подвійних
лапок;
var s = "Hello " + 'world';
var o = s.charAt(4); // "o"
var alphasCount = s.length; // 11
Boolean
• true
• false
var same = 5;
if (same) {
}
same = !!same;
alert(typeof same); // boolean
null
• null – порожнє значення
var s = "something";
alert(typeof s); // string
s = null;
alert(typeof s); // object
undefined
• undefined – значення, якого нема
• Це спеціальне значення дуже часто викликає
конфуз.
var s;
alert(s); // undefined
var point = new Object();
alert(point.L); // undefined
point.L = undefined;
alert(point.L); // undefined
Only objects, no classes
Всі об’єкти по своїй структурі є хеш таблицями
Dictionary<string, object>
JavaScript не має лінкера, «зв’язування» об’єктів
відбувається через спільний глобальний об’єкт
- window
Всі глобальні
об’єкти є
властивостями
об’єкта window
Object as Hashtable
<script type="text/javascript">
var map = new Object();
map["key1"] = "JavaScript";
map["key2"] = 10;
map["key3"] = true;
var point = new Object();
point["X"] = 3;
point['Y'] = -5;
alert(map['key2'] + point['X']);
</script>
window : object
map : object
key1 :string
"JavaScript"
key2 :number
10
key3 :boolean
true
point : object
X :number
3
Y :number
-5
<script type="text/javascript">
alert(point.X);
alert(window.point.X);
alert(window.window.point.X == point.X);
</script>
point.X || point["X"]
var point = new Object();
point["X"] = 3;
point.X = 3;
(!!!) наведені конструкції – еквівалентні
Коли доцільно використовувати
point["X"] нотацію
– коли об'єкт створюється з метою "бути хеш-
таблицею";
– коли не відомо наперед ім'я властивості:
var propName = prompt(
"Введіть ім'я властивості");
alert(point[propName]);
– коли ім'я властивості містить недозволені символи:
var person = new Object();
person["first name"] = "Ivanov";
person["-"] = true;
person["if"] = 1234567;
Нестрога типізація
var foo = 1; // typeof foo == number
foo = "firefox"; // typeof foo == string
...
foo = new Object(); // typeof foo == object
...
foo = false; // typeof foo == boolean
Арифметичні оператори, коментарі
• Такі ж як в C++/C#/Java
• так, є ++, -- та ?:
• // однорядковий коментар
• /* багаторядковий
коментар */
WARNING: operator +
var x = 1, y = 2;
alert(x + y + "$");
alert("£" + x + y);
Функції, як об'єкти першого рівня
• functions are first class objects
Дуже просте пояснення: з функціями можна
робити все те саме, що із звичайними
значеннями інших JavaScript типів (string,
object, number, boolean)
var f = "тут буде функція";
f = function() { };
var g = f;
alert(f == g); // об'єкт за посиланням
f()
<script type="text/javascript">
var sum = function(a, b) {
return a + b;
}
window["a - b"] = function(a, b) {
return a - b;
}
var result1 = sum(3, 2);
var result2 = window["a - b"](3, 2);
result = window["sum"](3, 2);
</script>
function f() {}
vs
var f = function () {}
<script type="text/javascript">
alert(sum(2, 2));
alert(diff(2, 2));
var sum = function(a, b) {
return a + b;
}
function diff(a, b) {
return a - b;
}
</script>
Оголошення функції, що потрібно
пам’ятати
function foo() {};
var foo = function foo() {};
var foo = undefined;
foo = function foo() {};
JavaScript: The Good Parts

More Related Content

Viewers also liked

/Users/svenjajessen/documents/museumsopgavepp
/Users/svenjajessen/documents/museumsopgavepp/Users/svenjajessen/documents/museumsopgavepp
/Users/svenjajessen/documents/museumsopgaveppSvenja Jessen
 
Light Box Maker - DSA Phototech
Light Box Maker - DSA PhototechLight Box Maker - DSA Phototech
Light Box Maker - DSA Phototech
Spicy Spirit Marketing, Inc.
 
Everyone Deserves A Professional Coach
Everyone Deserves A Professional CoachEveryone Deserves A Professional Coach
Everyone Deserves A Professional CoachSHUPE PLANS
 
Reception lisa joe
Reception lisa joeReception lisa joe
Reception lisa joepolaselm
 
Presentazione Pre Laurea Finale
Presentazione Pre Laurea FinalePresentazione Pre Laurea Finale
Presentazione Pre Laurea Finalegdelprete
 
Bringing About Better Health Dreams &amp; Realities
Bringing About Better Health   Dreams &amp; RealitiesBringing About Better Health   Dreams &amp; Realities
Bringing About Better Health Dreams &amp; Realitiesadelesarah1
 
LAVC Opening Day power pt.
LAVC Opening Day power pt.LAVC Opening Day power pt.
LAVC Opening Day power pt.polaselm
 
Energie Rinnovabili Morena
Energie Rinnovabili MorenaEnergie Rinnovabili Morena
Energie Rinnovabili Morenaguest12c69ae
 

Viewers also liked (14)

/Users/svenjajessen/documents/museumsopgavepp
/Users/svenjajessen/documents/museumsopgavepp/Users/svenjajessen/documents/museumsopgavepp
/Users/svenjajessen/documents/museumsopgavepp
 
Vnt biotopopgave 4
Vnt biotopopgave 4Vnt biotopopgave 4
Vnt biotopopgave 4
 
Light Box Maker - DSA Phototech
Light Box Maker - DSA PhototechLight Box Maker - DSA Phototech
Light Box Maker - DSA Phototech
 
Vn tbiotop 5
Vn tbiotop 5Vn tbiotop 5
Vn tbiotop 5
 
Museumsopgave1
Museumsopgave1Museumsopgave1
Museumsopgave1
 
Everyone Deserves A Professional Coach
Everyone Deserves A Professional CoachEveryone Deserves A Professional Coach
Everyone Deserves A Professional Coach
 
Studmco
StudmcoStudmco
Studmco
 
Reception lisa joe
Reception lisa joeReception lisa joe
Reception lisa joe
 
Presentazione Pre Laurea Finale
Presentazione Pre Laurea FinalePresentazione Pre Laurea Finale
Presentazione Pre Laurea Finale
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Tesi
TesiTesi
Tesi
 
Bringing About Better Health Dreams &amp; Realities
Bringing About Better Health   Dreams &amp; RealitiesBringing About Better Health   Dreams &amp; Realities
Bringing About Better Health Dreams &amp; Realities
 
LAVC Opening Day power pt.
LAVC Opening Day power pt.LAVC Opening Day power pt.
LAVC Opening Day power pt.
 
Energie Rinnovabili Morena
Energie Rinnovabili MorenaEnergie Rinnovabili Morena
Energie Rinnovabili Morena
 

Similar to вступ до Java script

Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
rznz
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascalAnn Eres
 
Паскаль
ПаскальПаскаль
Паскаль
Irina Tabanets
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovu
Escuela
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
Savitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsSavitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & Tips
OdessaJS Conf
 
+1 вступ
+1 вступ+1 вступ
+1 вступ
Ольга Рыбак
 
Clean code (UA)
Clean code (UA)Clean code (UA)
Clean code (UA)
Oleksandr Pavlyshak
 

Similar to вступ до Java script (12)

Practices
PracticesPractices
Practices
 
3018 1
3018 13018 1
3018 1
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
Паскаль
ПаскальПаскаль
Паскаль
 
Pascal основи програмування частина 1
Pascal основи програмування частина 1Pascal основи програмування частина 1
Pascal основи програмування частина 1
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovu
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
Pascal (динамічні структури даних)
Pascal (динамічні структури даних)Pascal (динамічні структури даних)
Pascal (динамічні структури даних)
 
Savitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsSavitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & Tips
 
+1 вступ
+1 вступ+1 вступ
+1 вступ
 
Clean code (UA)
Clean code (UA)Clean code (UA)
Clean code (UA)
 

вступ до Java script

  • 2. Для чого використовують JavaScript? • Для попередньої перевірки введених користувачем даних; • Для додавання інтерактивності до веб- сторінок: – складні контроли (DOM, events); – AJAX; – реклама, спам;
  • 3. What is the world’s most popular language?
  • 4. JavaScript Перше місце за “незрозумілість і неправильне використання“ JavaScript
  • 5. JavaScript Mocha LiveScript JScript – Microsoft (та ж сама історія що і з J++) ECMAScript JavaScript. Слово Java в назві мови не має нічого спільного з мовою Java від Sun Sun Netscape Hot Java (95)
  • 6. Bad Parts Мова містить “погані конструкції”, використання яких може перетворити читання чужого коду в справжній жах. Деякі з них ви просто змушені використовувати, напр. оператор + • Microsoft and
  • 7. Bad first implementations • Перші реалізації мови JavaScript містили купу помилок • Додайте до цього незліченні баги в прадавніх бравзерах, і ви зрозумієте за що так зненавиділи JavaScript
  • 8. For newbie and for guru JavaScript одночасно є дуже простою та дуже складною
  • 9. Не Java та не C# • Не має компілятора; • Не має строгої типізації; • Не має поняття “клас” (тип); • Не має класичного наслідування; • Не має virtual чи abstract методів; • Не має overloading методів; …
  • 10. JavaScript: ключові ідеї • “Є текст програми – виконуємо його”; • Нестрога типізація; • Об’єкти – динамічні контейнери; • Прототиповане наслідування; • Лямбда (lambda) [функції як об'єкти першого рівня]; • Зв’язування через глобальні змінні; global
  • 11. jQuery Використання бібліотек без хорошого розуміння мови
  • 12.
  • 13. Базові типи  Примітивні типи даних var i = 0; // number var s = "Hello, world"; // string var locked = false; // boolean var data = new Object(); // object var f = function() { return 1; } // function  Спеціальні “значення” null undefined
  • 14. <html> <head> <title></title> </head> <body> <script type="text/javascript"> var s = "Hello, world!"; alert(s); alert(typeof s); // string </script> </body> </html> alert(str)
  • 15. Numbers • Єдиний числовий тип – Нема int, long, byte і т.д. • Number - 64-бітне число з плаваючою крапкою (double) • Number “хворіє” тими ж проблемами, що і double в C++, C# чи Java: 0.1 + 0.2 == 0.30000000000000004 • for (i = 0; i < 10; i++) {} - OK
  • 16. NaN • NaN – Not a Number • Результат помилкової арифметичної операції <script type="text/javascript"> alert(typeof 1); // number alert(typeof NaN); // number (!) alert(5 - "four"); // NaN alert(NaN == NaN); // false (!) alert(isNaN(5 - "four")); // true </script>
  • 17. String • Стрічка є послідовністю 16-ти бітних символів; • Немає окремого символьного типу (char); – Символ “емулюється” стрічкою з довжиною 1; • Стрічки незмінні (immutable); • Стрічковий літерал можна записати з використанням як одинарних так і подвійних лапок; var s = "Hello " + 'world'; var o = s.charAt(4); // "o" var alphasCount = s.length; // 11
  • 18. Boolean • true • false var same = 5; if (same) { } same = !!same; alert(typeof same); // boolean
  • 19. null • null – порожнє значення var s = "something"; alert(typeof s); // string s = null; alert(typeof s); // object
  • 20. undefined • undefined – значення, якого нема • Це спеціальне значення дуже часто викликає конфуз. var s; alert(s); // undefined var point = new Object(); alert(point.L); // undefined point.L = undefined; alert(point.L); // undefined
  • 21. Only objects, no classes Всі об’єкти по своїй структурі є хеш таблицями Dictionary<string, object> JavaScript не має лінкера, «зв’язування» об’єктів відбувається через спільний глобальний об’єкт - window Всі глобальні об’єкти є властивостями об’єкта window
  • 22. Object as Hashtable <script type="text/javascript"> var map = new Object(); map["key1"] = "JavaScript"; map["key2"] = 10; map["key3"] = true; var point = new Object(); point["X"] = 3; point['Y'] = -5; alert(map['key2'] + point['X']); </script>
  • 23. window : object map : object key1 :string "JavaScript" key2 :number 10 key3 :boolean true point : object X :number 3 Y :number -5 <script type="text/javascript"> alert(point.X); alert(window.point.X); alert(window.window.point.X == point.X); </script>
  • 24. point.X || point["X"] var point = new Object(); point["X"] = 3; point.X = 3; (!!!) наведені конструкції – еквівалентні
  • 25. Коли доцільно використовувати point["X"] нотацію – коли об'єкт створюється з метою "бути хеш- таблицею"; – коли не відомо наперед ім'я властивості: var propName = prompt( "Введіть ім'я властивості"); alert(point[propName]); – коли ім'я властивості містить недозволені символи: var person = new Object(); person["first name"] = "Ivanov"; person["-"] = true; person["if"] = 1234567;
  • 26. Нестрога типізація var foo = 1; // typeof foo == number foo = "firefox"; // typeof foo == string ... foo = new Object(); // typeof foo == object ... foo = false; // typeof foo == boolean
  • 27. Арифметичні оператори, коментарі • Такі ж як в C++/C#/Java • так, є ++, -- та ?: • // однорядковий коментар • /* багаторядковий коментар */ WARNING: operator + var x = 1, y = 2; alert(x + y + "$"); alert("£" + x + y);
  • 28. Функції, як об'єкти першого рівня • functions are first class objects Дуже просте пояснення: з функціями можна робити все те саме, що із звичайними значеннями інших JavaScript типів (string, object, number, boolean) var f = "тут буде функція"; f = function() { }; var g = f; alert(f == g); // об'єкт за посиланням
  • 29. f() <script type="text/javascript"> var sum = function(a, b) { return a + b; } window["a - b"] = function(a, b) { return a - b; } var result1 = sum(3, 2); var result2 = window["a - b"](3, 2); result = window["sum"](3, 2); </script>
  • 30. function f() {} vs var f = function () {} <script type="text/javascript"> alert(sum(2, 2)); alert(diff(2, 2)); var sum = function(a, b) { return a + b; } function diff(a, b) { return a - b; } </script>
  • 31. Оголошення функції, що потрібно пам’ятати function foo() {}; var foo = function foo() {}; var foo = undefined; foo = function foo() {};