Решаю ДЗ по курсу: [Udemy] [Иван Петриченко] Полный курс по JavaScript. Основы JavaScript. Вопросы к этому заданию
1) Какое будет выведено значение: let x = 5; alert( x++ ); ? Ответ: 5, так как используется посфиксное значение (++ стоит после переменной X), то сначала передается старое значение, а после этого только добавляет +1 от старого значения, в отличии от префиксного значения, если бы "++" стояли бы перед переменной.
2) Чему равно такое выражение: [ ] + false - null + true ? Ответ: NaN, так как выражение бессмысленное, массив [ ] прибавить булевое значение превратится в строку, так...
Что будет на выходе? Ответ: false, false, false, true Пояснение: Сase 1. null > 0, null < 0 Операторы сравнения > и < после приведения непримитивных операндов к примитиву, применяют метод toNumber на обеих частях выражения (исключение: оба операнда типа string). Так, null преобразуется к +0, а 0 остается 0. +0 и 0 имеют одинаковые числовые значения, поэтому результат false. [про signed zeros в JS можно почитать тут (https://medium.com/coding-at-dawn/is-negative-zero-0-a-number-in-javascript-c62739f80114)] *** Case 2. null == 0 В ECMA описан алгоритм сравнения для равенств (https://javascript.ru/ecma/part11#a-11.9.3). В зависимости от типа операндов, алгоритм ведет себя по разному. В нем описаны, например, такие кейсы: - когда оба операнда одного типа - когда один из операндов null, а другой undefined - один string, другой number и некоторые другие. Но кейс, в котором один из операндов null, а другой number/string в алгоритме не прописан. Не попав ни в одно из условий, алгоритм вернет false по дефолту. *** Case 3. null >= 0 Алгоритм сравнения для >= и <= работает от обратного. (Если a НЕ меньше b, то оно точно больше или равно b.) Т.к null < 0 возвращает значение false, то null >= 0 - это true. По этой логике null <= 0 тоже true.