функций. И я сказал что есть ещё вариант создания функции через new Function, а он мне ответил, цитирую: "эта ху...ня не нужна вообще, забудь за неё, и если про неё спросят на интервью, скажи что это самая бесполезная х...ня которая только может быть". Вопрос таков. Это действительно так?
https://learn.javascript.ru/new-function Никогда не писал код с new Function
А это вообще безопасно ? Похоже на ub
Это действительно так. Можно натянуть сову на глобус и сказать, что это альтернатива eval(), то есть - возможность исполнять не прописанный заранее код. Такое может потребоваться в очень узком и специфическом кругу задач, например пользовательский калькулятор, когда пользователь может сам задавать правила выполнения кода. Но, как говорил один персонаж из одного известного фильма, "вы ходите по очень тонкому льду, друзья мои педигрипал".
Да, я тоже сначала подумал что это возможная альтернатива eval(), что является не безопасным, и по моему только для "внутреннего использования", или как-то так (давно читал, уже не помню точно, почему именно для внутреннего)... Думал может это типа крутой универсальный способ создавать крутые универсальные функции, но перечитал https://learn.javascript.ru/new-function и понял что это так не работает... Кароче, как я понял, это действительно ненужная штука :)
Ого new, это что ООП?
"Функции, объявленные через new Function, имеют [[Environment]], ссылающийся на глобальное лексическое окружение, а не на родительское. Поэтому они не могут использовать внешние локальные переменные. Но это очень хорошо, потому что страхует нас от ошибок. Переданные явно параметры – гораздо лучшее архитектурное решение, которое не вызывает проблем у минификаторов." Важное уточнение. "Поэтому они не могут использовать внешние локальные переменные".
Угумс. Там даже есть пример с использованием локальной переменной... :) Видимо это что-то оставшееся для обратной совместимости... Или что-то вроде того?
Не выяснял, но кажется, что это тоже.
Если ты не знаешь зачем тебе эта фича, она тебе не нужна.
Обсуждают сегодня