JavaScript (JS) – сценарный объектно-ориентированный язык программирования. Основная область применения JS – организация интерактивности на веб-сайтах. Но так же быстро набирает обороты и на серверной стороне (node.js как серверный JS, couchdb одна из БД на JS и т.д.). С помощью JS становится возможным получение данных от пользователя, их динамическая обработка и выведение результатов.
С помощью JS возможно динамически и асинхронно получить доступ к базе данных, файлам используя встроенную технологию XMLHttpRequest (напр. в jQuery функция ajax). И этот запрос не будет требовать перезагрузки страницы.
На данный момент разработано множество библиотек, облегчающих и ускоряющих разработку типовых решений для веб-сайтов на JS (напр. jQuery, AngularJS, ReactJS).
Типизация в JS динамическая, т.е. при объявлении переменных тип указывать не нужно.
Например:
Свойства объектов доступны через точку:
Функции могут определяться так:
Область видимости ограничена функциями:
Наследование прототипное
Функции могут передаваться параметром:
Примитивы неизменяемы (как объекты):
Спасибо за внимание.
1 2 3 | var pathsCount = 42; // Переменная «pathsCount» имеет тип integer var color = "yellow" ; // Переменная «color» имеет тип string var drink = { name: "Tea" }; // Переменная «drink» имеет тип object |
1 2 3 4 5 | var drink = { name: "Tea" }; alert(drink.name); // <-- Tea drink.name = "Coffee" ; alert(drink.name); // <-- Coffee |
1 2 3 4 5 6 7 8 9 10 11 12 | // разница при работе с разным объявлением во всплытии функций // function funcName всплывут. т.е. будут доступны из всей родительской функции printVal(4); //<-- 4, доступна до объявления printValue(2); // <-- printValue is not a function. Будет доступна после объявления function printVal (val) { document.write(val); } var printValue = function (val) { //<-- тип printVal - function document.write(val); }; |
1 2 3 4 5 6 7 8 9 | var printVal = function (val) { if ( typeof val === "number" ) { var incremented = val + 1; } alert (incremented); // <-- val + 1, если val число, иначе undefined return val; } |
1 2 3 4 5 6 7 8 9 10 11 | var Fruit = { type: "fruit" }; var Apple = function () { this .getType = function () { return this .type; }; }; Apple.prototype = Fruit; var apple = new Apple(); alert(apple.getType()); // <-- fruit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function increment (value) { return ++value; }; function map (arr, fn) { return arr.map(fn); //<-- map - встроенная функция для обхода массива и изменения элементов //вызовет функцию fn для каждого элемента в массиве, передавая его как параметр (value) } var numbers = [ 1, 3, 1 ]; numbers = map(numbers, increment); // <-- переопределяем numbers результатом из map // В map передаём массив цифр и функцию increment // С помощью функции [ ].map проходим по всем элементам и изменяет результат (возвращая новое значение) // результат [ 2, 4, 2 ]; |
1 2 3 4 5 6 7 | var num = 4; num.prev = 5; alert(num.prev); // <-- undefined //но переопределяются: num = 3; alert(num); // <-- 3 |