Operation(3)
// вывод А:2
// сработал if, произошел вызов Operation(2)
Operation(2)
// вывод А:1
// сработал if, произошел вызов Operation(1)
Operation(1)
// вывод А:0
// if не сработал
// вывод В:0
// вывод В:1 из Operation(2)
// вывод В:2 из Operation(3)
const getNestedItems = (data, test) =>
data instanceof Object
? Object.values(data).flatMap(n => getNestedItems(n, test))
: test(data) ? [ data ] : [];
const result = getNestedItems(obj, x => /^[A-Z]+$/.test(x)).join('');
const number = 123456.789;
new Intl.NumberFormat('ru-RU').format(number);
// "123 456,789"
по умолчанию { style: 'decimal' }
new Intl.NumberFormat('ru-RU', { minimumFractionDigits: 6 })
.format(123456.789012345);
// "123 456,789012" - после запятой не разделяет
correct_date = `${hour}:${min}`;
// correct_date = `${hour}:${min}:${sec}`;
const getTimeString = () => {
const subbed = new Date();
const hour = subbed.getHours().toString().padStart(2, '0');
cosnt min = subbed.getMinutes().toString().padStart(2, '0');
const sec = subbed.getSeconds().toString().padStart(2, '0');
return `${hour}:${min}:${sec}`;
}
let clock = document.getElementById('clock')
setInterval(() => {
clock.innerHTML = getTimeString();
}, 1000);
const increaseSalary = async () => {
try {
const employees = await api.getEmployees();
const employee = employees.reduce(
(acc, cur) => (acc.salary > cur.salary ? cur : acc),
{ salary: Infinity },
);
const newSalary = (employee.salary * 1.2) | 0;
const result = await api.setEmployeeSalary(employee.id, newSalary);
if (result.salary !== newSalary) {
throw 'API Error, salary has not increased';
}
await api.notifyEmployee(
employee.id,
`Hello, ${employee.name}! Congratulations, your new salary is ${newSalary}!`,
);
return true;
} catch (e) {
api.notifyAdmin(e.message);
return false;
}
});
function checkResult() {
const data = {
hash: hash,
}
$.ajax({
url: 'result.php',
dataType: "json",
data: data,
success: (result) => {
const ok = result.ok;
if (ok != 1) {
// перезвоните через секунду
setTimeout(checkResult, 1000);
}
},
error: (response) => { // Данные не отправлены
$('#result_form').html('Ошибка. Данные не отправлены.');
}
});
}
checkResult();
let numbers = [1, 2, 3, 0, 4, 5, 6];
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] > 0) {
sum += numbers[i];
} else {
break;
}
}
console.log(sum);
<=
. Как только проитерируется весь массив - цикл не будет завершен, а при попытке достать элемент (а мы уже всё проитерировали) Вы рискуете получить NaN
.i < 0
. Тут сразу две ошибки: не i
а b[i]
; и не <
, а ===
. Если оставить меньше нуля, то даже при достижении элемента равному нулю цикл не будет остановлен. async function pageUpdate(event) {
// Если функция вызвана без аргументов:
if (typeof event == 'undefined') {
// Устанавливаем обработчики
// на все ссылки на странице:
$('a[href]').click(pageUpdate);
}
// Если функция вызвана
// в результате клика
// по ссылке:
else {
// Берём адрес с нажатой ссылки
// и записываем в переменную link:
var link = event.target.href;
// Если ссылка ведет на наш сайт:
if (link.includes(location.host)) {
// Предотвращаем переход:
event.preventDefault();
// Блокируем страницу, чтобы
// больше нельзя было кликать:
$('body').css('pointer-events', 'none');
// Активируем анимацию
// постепенного исчезновения
await $('body').animate({ opacity: 0 }, 1000).promise();
// Грузим новую страницу AJAX-ом без
// фактической перезагрузки текущей:
var html = await $.ajax(link);
var doc = new DOMParser().parseFromString(html, 'text/html');
var html = $('body', doc).html();
history.pushState(null, null, link);
$('body').html(html);
// Заново ставим
// обработчики:
pageUpdate();
// Активируем анимацию
// постепенного появления:
await $('body').animate({ opacity: 1 }, 1000).promise();
// Снимаем блокировку с документа:
$('body').css('pointer-events', '');
}
}
}
pageUpdate();