requestAnimationFrame()
передаёт разовый «пас» – когда браузер будет готов отрендерить следующий кадр, вызовет переданный коллбэк. Несколько вызовов rAF сложат коллбэки в стек - в следующем кадре выполнятся все. contacts.reduce(....).arr;
возвращает новый массив с нужными объектами. Поэтому как-то так: const contactObjects = contacts.reduce(....).arr;
console.log(contactObjects);
function bar() {
var foo;
// ...
foo = 10; // свой, местный foo
}
var foo; // внешний
function bar() {
foo = 10; // внешний назначился
}
function bar() {
function zee() {
foo = 10;
}
}
не в zee, и не в bar, а выше, глобальный foo.function bar() {
function zee() {
foo = 10;
}
var foo; // всплывёт в начало ф-ии bar
}
в bar! var
. Оно всплывает. Наверх функции или глобального кода. var foo = 10;
при этом разорвёт как хомячка: объявление var foo;
уплывёт в начало функции, а назначение foo = 10;
останется на месте.a = 10
. Оно никуда не уплывает. Но вопрос, что за a
при этом получит значение ) Если дело внутри функции и в ней же было объявление, то она. Если объявили выше - оно. Если вообще не объявляли, то выше уж некуда, глобус получит ) a; // вот эта строка вызывает ошибку: пытаемся использовать что-то несуществующее
a = 10;
console.log(a); // тут уже всё ок, выводится 10
var
, то нет никакого всплытия. Её ищут, сначала внутри функции, потом выше над ней – это в примере уже глобальный уровень. В JS всегда есть самый высший объект, корень, рут ) В браузере это объект window
.function bar() {
a = 17;
}
bar();
console.log(window.a) // выведет 17
a
становится только после вызова c();
var a;
ничего не меняет.a
не объявлена, её разыскивают выше, в контексте. В этом примере это сразу в глобальной области видимости. const reEn = new RegExp('/en/');
reEn.test("/en/test"); // true, работает