Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Приведение типов в +!{}[0]

#javascript


Подскажите, пожалуйста, как получилась единица? 

+!{}[0] // =1


Спасибо! 
    


Ответы

Ответ 1



tl;dr; {}[0] → undefined, !undefined → true, +true → 1 Bracket notation Первое, что используется в данном выражении: Bracket notation - возможность доступа к свойствам объектов, с использованием квадратных скобок и строкового ключа. {}[0] - попытка взять свойство с именем 0 в пустом объекте. Так как такое свойство отсутствует - будет получен закономерный результат undefined. оператор логического отрицания(!) Далее, к результату (undefined) применяется оператор логического отрицания(!). Данный оператор вернет применяет к операнду абстрактный метод ToBoolean, и инвертирует результат. Как можно заметить из таблицы, для undefined результат ToBoolean(undefined) → false, после инвертирования получаем true. унарный оператор + Далее, к результату (true) применяется унарный оператор +, который просто переводит результат в число. Для этого используется абстрактная функция ToNumber Как можно заметить из таблицы, для true результат ToNumber(true) → 1.

Комментариев нет:

Отправить комментарий