Конструкция new Function

253
28 августа 2017, 09:23

Сейчас изучаю 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; '? Или имеется в виду, что можно оставить данный параметр пустым, ''?

Answer 1

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

Например:

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>

READ ALSO
Почему запрос к серверу не работает только в firefox?

Почему запрос к серверу не работает только в firefox?

fetch (полифил whatwg-fetch) запрос работает во всех браузерах (даже IE) но не работает в Firefox:

339
Разбиение страницы на отдельные файлы

Разбиение страницы на отдельные файлы

Как разбить страницу на отдельные файлы? тоесть чтоб хэдер, футер и др хранились в отдельных файлах и при необходимости подключались к страницеВозможно...

259
Время выполнения PHP превышает квоту

Время выполнения PHP превышает квоту

Добрый день! Начинаю разбираться с PHP столкнулся с проблемой:

270
Неверное время DateTime

Неверное время DateTime

ЗдравствуйтеЯ делаю систему оповещений и есть задача сделать следующее: узнать, когда пришло уведомление

293