Основы JavaScript
В данной статье мы рассмотрим основы JavaScript, разберёмся с синтаксисом данного языка и различными техниками применения.
План:
Для выполнения JavaScript требуется специальная программа — браузер. Во все современные браузеры встроен интерпретатор языка JavaScript.
JavaScript позволяет:
1. Добавлять, удалять, редактировать элементы страницы и их содержимое
2. Производить какое-либо действия в зависимости от действий пользователя
3. Посылать запросы к серверу
Документация разработчиков: developer.mozilla.org
Начало работы на JavaScript
Первое с чего следует начать это установить IDE или редактор кода. Здесь дело вкуса, главное нужно понимать разницу между редакторами и IDE. Об этом читайте в этой статье: Редакторы кода и IDE
когда Вы приняли решение где писать код необходимо понять где смотреть результат. Мы уже говорили что JavaScript выполняет браузер, но недостаточно установить какой-то из них, настоящий front-end разработчик, back-end разработчик или верстальщик имеют на своей машине все популярные браузеры.
Для создания первого скрипта необходимо в тело html страницы добавить javascript код, выглядит это следующим образом:
1 2 3 | <script>
alert('Мой первый скрипт');
</script> |
Синтаксис JavaScript
Комментарии
В JavaScript есть два вида комментариев: однострочные (//) и многострочные (/**/)
Подключение файлов js
Подключение файлов js может быть как внутри тегов head, после закрывающего тега html
1 | <script src="js/script.js"></script> |
Если указан атрибут src, то содержимое тегов script игнорируется.
Для асинхронной загрузки js файла существует два атрибута async или defer.
async — какой скрипт будет первым загружен тот и выполнится
defer — вне зависимости от скорости загрузки сначала будет выполнен тот скрипт что выше в коде.
1 2 3 4 5 6 7 | // какой быстрее загрузится тот и выполнится первым <script src="script1.js" async></script> <script src="script2.js" async></script> // сначала выполнится script1.js а потом script2.js <script src="script1.js" defer></script> <script src="script2.js" defer></script> |
Атрибуты async и defer работают только для подключаемых внешних файлов. (там где есть атрибут src)
Стандарт ES5
Из-за поддержки старых решений браузеров накопился большой ряд проблем. Внедрение нового стандарта ECMAScript 5 (ES5) позволило решить данную проблему, отказавшись от поддержки ненужного функционала.
Для указания, что ваш код написан в новом стандарте необходимо указать вначале следующую директиву:
1 2 3 | "use strict"; // код по современному стандарту ES5 ... |
Отсутствие поддержки браузеров < IE9
Переменные и константы
1 2 3 4 5 6 7 | var b; var i = 1; var a1 = 2; var stringName = "text"; var c1= 'text', c2 = 25; var VALUE_P = 3.14; // константа (можно изменить, отличие данного языка, но это не рекомендуется) |
Ключевое слово var обязательно для нового стандарта.
Типы данных
1 2 3 4 5 6 7 8 9 | var a = 12.4; // number
var s = "text"; // string
var flag = true; // boolean
var b = null; // null
var user = { name: "root" }; // object
// Infinity - при делении на ноль
// undefined - не присвоено значение
// NaN - Ошибка вычислений (например из-за не соответствия типов) |
Определить тип переменной можно через оператор typeof
Условный оператор
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// оператор условия
if (условие) {
оператор при true
}
else{
оператор при false
}
// интервал
switch(значение){
case 1: операторы break;
case 2: операторы break;
default: операторы break;
} |
Приведение типов
1 2 | var a = String(1); // "1" string
var a = Number("1"); // 1 number |
Циклы
1 2 3 4 5 6 7 8 9 10 11 12 13 |
while(условие) {
// тело цикла
}
do{
// тело цикла
}
while (условие);
for (начало; условие; шаг) {
// тело цикла
} |
Прерывание цикла — break. Переход к следующей итерации — continue
Функции
1 2 3 4 5 6 7 8 9 10 11 12 13 | function имя(параметры) {
код функции
// return возвращаемое значение;
}
// два варианта работы с функциями
function sum(a, b) {
return a + b;
}
var sum = function(a, b) {
return a + b;
} |
Функции с параметрами:
1 2 3 4 5 6 7 | function go(a,b) {
alert("a="+a+", b="+b);
}
go(1); // a=1, b=undefined
go(1,2); // a=1, b=2
go(1,2,3); // a=1, b=2, третий аргумент не вызовет ошибку |
Является ошибка следующая запись:
1 2 3 4 5 6 | function sum(a) {
...
}
function sum(a, b, c) {
...
} |
Может быть только одна функция с именем sum, которая вызывается с любыми аргументами.
Свойства и методы
К любому элементу можно применить свойство или метод.
1 2 3 4 5 | var s = "text"; s.length; // свойство var text = "text"; text.toUpperCase(); // метод |
Метод имеет скобки, свойство нет!
Массивы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var mass1 = []; // пустой массив
var mass2 = ["text1", "text2"];
mass2[0]; // выбор элемента массива
mass2.length // длина массива
// или
var mass3 = new Array("text1", "text2");
// Многомерные массивы
var mass4 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]; |
Массив может содержать элементы любого типа!
1 2 3 |
var mass3 = [ 10, 'text', { name: 'Вася' }, true ];
arr[2].name; выбор элемента массива и обращение к его свойству name |
Методы для работы с массивом
- pop — удаляет последний элемент из массива и возвращает его
1 2
var mass2 = ["text1", "text2"]; mass2.pop(); // удалили последний
- push — добавляет элемент в конец массива:
1 2
var mass2 = ["text1", "text2"]; mass2.push("text3"); // добавили элемент в конец массива - shift — удаляет из массива первый элемент и возвращает его
1 2
var mass2 = ["text1", "text2"]; mass2.shift(); // удалили первый
- unshift — добавляет элемент в начало массива
1 2
var mass2 = ["text1", "text2"]; mass2.unshift("text0"); // добавили в начало массива - split — преобразует строку в массив
1 2
var s = "text1, text2"; var mass = s.split(', '); // результат массив из 2 элементов - join — преобразует массив в строку
1 2
var mass2 = ["text1", "text2"]; var s = mass2.join(' '); // строка из массива с разделителем " " - delete — удаление элемента массива
1 2
var mass2 = ["text1", "text2"]; delete mass2[1];
Объекты
1 2 3 4 5 | var obj = new Object();
// или
var obj = {}; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | var obj = {
o1: "значение 1",
o2: "значение 2"
};
// создание объекта
var a = 10;
var my_obj = {
свойство1 : 'значение1',
'свойство 2' : "значение2",
num : a,
obj2 : {
s1 : 1,
},
method1 : function(){
// метод
},
method2 : myMethod,
get summ(){ // свойство my_obj.summ
return this.num + 5;
},
set summ(value){ // свойство my_obj.summ = 7;
this.num = this.num + value;
}
};
function myMethod(){
}
// или
var my_obj1 = new Object({s1 : 1});
// обращение к свойству объекта
my_obj.num;
my_obj['num'];
obj.o1; // вызов элемента объекта
delete obj.o2; // удаление элемента
// перебор свойств объекта
var a = 10;
var my_obj = {
свойство1 : 'значение1',
'свойство 2' : "значение2",
num : a,
obj2 : {
s1 : 1,
},
method1 : function(){
// метод
},
method2 : myMethod
};
function myMethod(){
}
for (var key in obj) {
// этот код будет вызван для каждого свойства объекта
// ..и выведет имя свойства и его значение
alert( "Ключ: " + key + " значение: " + obj[key] );
}
// Обращение к свойству объекта
my_obj.num;
my_obj['num'];
// проверка существования свойства
if('s1' in obj){
} |
Создание объекта из другого:
1 | var my_obj2 = Object.create(my_obj1); // в скобках указываем прототип свойства которого будут наследоваться |







14 ноября 2018 /
3468 Views /
8 комментариев