Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 58 из 114 · 11 мин
Всплытие, временная мёртвая зона, "use strict", автоматическая точка с запятой, пустая инструкция, метки, with и catch без параметра.
Я вызвал функцию раньше, чем написал её, — и она сработала! А с let — ошибка. Вот вам загадка.
Никакой магии: всплытие и мёртвая зона. Сейчас разберём.
function целиком «поднимаются» в начало области — функцию можно вызвать до строки объявления. var поднимается без значения (undefined).console.log(price);
var price = 220;
console.log(greet());
function greet() { return "Привет"; }let, const и class существуют с начала блока, но до строки объявления обращение к ним — ReferenceError.undefined — это защита.try {
console.log(total);
let total = 1;
} catch (e) {
console.log(e.name);
}"use strict" в начале файла или функции: запрещает необъявленные переменные, with, дубли параметров; this в обычной функции — undefined. Модули и классы строгие всегда."use strict";
try {
undeclared = 5;
} catch (e) {
console.log(e.name);
}return и значение на следующей строке → вернётся undefined.; не туда.function f() {
return
42;
}
console.log(f());;; — инструкция, которая ничего не делает. Встречается в for (;;) и как ошибка после if (x);.let i = 0;
for (; i < 3; ) i++;
console.log(i);label:outer: for (…) — имя для цикла; break outer выходит сразу из внешнего цикла.outer: for (const a of [1, 2, 3]) {
for (const b of [1, 2, 3]) {
if (a * b === 4) {
console.log("Нашёл", a, b);
break outer;
}
}
}withwith (obj) { … } делает свойства объекта переменными. Запрещён в строгом режиме и модулях — не используй, но узнавай в старом коде.const cup = { size: 350 };
with (cup) {
console.log(size);
}catch без параметраtry { … } catch { … } — без (error), если сама ошибка не важна.let data;
try {
data = JSON.parse("не json");
} catch {
data = {};
}
console.log(data);Объявляй переменные в начале блока и пиши const/let — тогда мёртвая зона тебя никогда не укусит.
В groups найди первую группу, где есть пользователь с именем "Лев": сохрани номер группы в found и выйди из обоих циклов через метку и break.
break с меткой — пока нетВыберите один ответ.
Что будет при обращении к let x до строки let x = 1?
Выберите один ответ.
Что вернёт функция, где return и 42 на разных строках?
Проверяем состояние обучения…