Сейчас изучаю Js по учебнику https://learn.javascript.ru.
Вопрос по функциям:
var sum = new Function('a,b', ' return a+b; ');
var result = sum(1, 2);
alert( result ); // 3
То есть, функция создаётся вызовом new Function(params, code):
params Параметры функции через запятую в виде строки. code Код функции в виде строки. Таким образом можно конструировать функцию, код которой неизвестен на момент написания программы, но строка с ним генерируется или подгружается динамически во время её выполнения.
Я не понял, как код функции неизвестен на момент написания программы, если во втором параметре указано ' return a+b; '? Или имеется в виду, что можно оставить данный параметр пустым, ''?
Так как в данном случае в качестве тела функции передается обычная строка, до передачи она может быть собрана как угодно, на основании переменных, значение которых неизвестно в момент написания.
Например:
function calc(x, expr) {
var func = new Function('x', `return ${expr}`);
console.log(func(x));
}
<input type="text" id="expr" value="x*x" /> <br/>
<input type="text" id="x" value="2" /> <br/>
<button onclick="calc(x.value, expr.value)">Calc</button>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей