 
  
  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('');function* getNestedItems(data, test) {
  if (Object(data) === data) {
    for (const k in data) if (Object.hasOwn(data, k)) {
      yield* getNestedItems(data[k], test);
    }
  } else if (test(data)) {
    yield data;
  }
}
const result = ''.concat(...getNestedItems(obj, x => x?.toUpperCase?.() === x));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();