Страницы

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

вторник, 31 марта 2020 г.

Почему наличие унарного плюса в нижеприведенном коде делает ее ошибочной?

#javascript


(+(("lastIndexOf") in []) ** 55 + 2) + 5 

    


Ответы

Ответ 1



Во многих языках, таких как PHP и Python и других, есть оператор возведения в степень (обычно ^ или **), оператор определён имеющим приоритет выше, чем у унарных операторов, таких как унарный + и унарный -, но есть несколько исключений. Например, в Bash оператор ** создан имеющим приоритет ниже, чем у унарных операторов. В JavaScript невозможно написать двухсмысленное выражение, т.е. вы не можете ставить унарный оператор (+/-/~/!/delete/void/typeof) непосредственно перед базовым числом. Взято ОТСЮДА Другими словами: это ограничение js'а - нельзя использовать унарный оператор перед базовым числом (числом которое возводится в степень) из-за "двусмысленности". Варианты исправления. Явно указываем порядок действий: ((+(("lastIndexOf") in [])) ** 55 + 2) + 5 Используем старый метод: (Math.pow(+("lastIndexOf" in []), 55) + 2) + 5

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

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