170 похожих чатов

Только что разговаривал с другом, и обсуждали возможные варианты создания

функций. И я сказал что есть ещё вариант создания функции через new Function, а он мне ответил, цитирую: "эта ху...ня не нужна вообще, забудь за неё, и если про неё спросят на интервью, скажи что это самая бесполезная х...ня которая только может быть". Вопрос таков. Это действительно так?

10 ответов

25 просмотров

https://learn.javascript.ru/new-function Никогда не писал код с new Function

Алексей Попов
https://learn.javascript.ru/new-function Никогда ...

А это вообще безопасно ? Похоже на ub

Это действительно так. Можно натянуть сову на глобус и сказать, что это альтернатива eval(), то есть - возможность исполнять не прописанный заранее код. Такое может потребоваться в очень узком и специфическом кругу задач, например пользовательский калькулятор, когда пользователь может сам задавать правила выполнения кода. Но, как говорил один персонаж из одного известного фильма, "вы ходите по очень тонкому льду, друзья мои педигрипал".

Kvhqm-Mboe Автор вопроса
][_ioN ‏ 😏
Это действительно так. Можно натянуть сову на глоб...

Да, я тоже сначала подумал что это возможная альтернатива eval(), что является не безопасным, и по моему только для "внутреннего использования", или как-то так (давно читал, уже не помню точно, почему именно для внутреннего)... Думал может это типа крутой универсальный способ создавать крутые универсальные функции, но перечитал https://learn.javascript.ru/new-function и понял что это так не работает... Кароче, как я понял, это действительно ненужная штука :)

Kvhqm Mboe
Да, я тоже сначала подумал что это возможная альте...

"Функции, объявленные через new Function, имеют [[Environment]], ссылающийся на глобальное лексическое окружение, а не на родительское. Поэтому они не могут использовать внешние локальные переменные. Но это очень хорошо, потому что страхует нас от ошибок. Переданные явно параметры – гораздо лучшее архитектурное решение, которое не вызывает проблем у минификаторов." Важное уточнение. "Поэтому они не могут использовать внешние локальные переменные".

Kvhqm-Mboe Автор вопроса
][_ioN ‏ 😏
"Функции, объявленные через new Function, имеют [[...

Угумс. Там даже есть пример с использованием локальной переменной... :) Видимо это что-то оставшееся для обратной совместимости... Или что-то вроде того?

Kvhqm Mboe
Да, я тоже сначала подумал что это возможная альте...

Если ты не знаешь зачем тебе эта фича, она тебе не нужна.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта