Учебник js, cards 61-120 Flashcards
https://learn.javascript.ru/
Что вернет -1 / 0 ?
alert( -1 / 0 ); // -Infinity
Что будет при делении 0/0 ?
alert( 0 / 0 ); // NaN
Какой будет результат при if (NaN == NaN) alert( “==” ); if (NaN === NaN) alert( “===” );
никакой: if (NaN == NaN) alert( “==” ); // Ни один вызов if (NaN === NaN) alert( “===” ); // не сработает
Какие функции есть для округления?
Math.floor - Округляет вниз Math.ceil - Округляет вверх Math.round - Округляет до ближайшего целого alert( Math.floor(3.1) ); // 3 alert( Math.ceil(3.1) ); // 4 alert( Math.round(3.1) ); // 3 обрезание дроби: alert( ~~12.3 ); // 12 Существует также специальный метод num.toFixed(precision), который округляет число num до точности precision и возвращает результат в виде строки:
Чему равно
alert( 0.1.toFixed(20) );
alert( 0.1.toFixed(20) ); // 0.10000000000000000555
Как возвести число в степень?
Math.pow(x, exp)
Какие есть функции для максимума, минимума?
Math.max(a, b, c…) - возвращает наибольший из списка аргументов
Math.min(a, b, c…) - возвращает наименьший из списка аргументов
Функция для рэндомного числа?
Math.random()
Как отформатировать число с разбиением по тысячам?
alert( number.toLocaleString() ); // 123 456 789
Что не так в коде калькулятора суммы?
var a = prompt(“Введите первое число”, “”);
var b = prompt(“Введите второе число”, “”);
alert( a + b );
Будут складываться строки вместо чисел
Почему 6.35.toFixed(1) округляется до 6.3?
Из-за потери точности.
Во внутреннем двоичном представлении 6.35 является бесконечной двоичной дробью. Хранится она с потерей точности… А впрочем, посмотрим сами:
alert( 6.35.toFixed(20) ); // 6.34999999999999964473
Интерпретатор видит число как 6.34…, поэтому и округляет вниз.
Что в коде для интернет-магазина не так?
alert( 0.1 + 0.2 + ‘$’ );
Код выводит 0.30000000000000004$
Какая беда с таким циклом?
for(var i = 0; i != 10; i + 0.2) { ... }
Цикл бесконечный =)
Классическая ошибка в сравнении дробей
Какие типы в js передаются по ссылке, а какие - по значению?
Строки, числа, булевы значения, null/undefined передаются по значению, объекты - по ссылке
Какая тонкость в отладке такого кода в консоли?
При «раскрытии» свойств объекта в консоли – браузер всегда выводит их текущие (на момент раскрытия) значения, какбудто объект не меняется
Так происходит именно потому, что вывод не делает «копию» текущего содержимого, а сохраняет лишь ссылку на объект. Запомните эту особенность консоли, в будущем, при отладке скриптов у вас не раз возникнет подобная ситуация.