double arrow

Процедурный тип данных и функция eval


Предположим, что требуется написать сценарий вычисления значения функции в заданной точке. Пусть функция f1 описана следующим образом:

function f1(x)
{return Math.pow(x,5)-3}

Функция f2 задается описанием:

function f2(x)
{return Math.pow(x-2,4)+1}

Во многих языках программирования разрешается рассматривать функции f1 и f2 как процедурные константы, а в программе описать переменную процедурного типа, значение которой во время выполнения программы может меняться. Такие переменные связываются во время выполнения программы с разными процедурами. Процедурные константы и переменные можно использовать в качестве фактических параметров. В применении к нашей задаче ситуация была бы следующей: в программе описана функция, которая вычисляет значение в точке, определяемой пользователем. Функция, задаваемая пользователем, передается в качестве параметра. Иногда в аналогичных случаях говорят, что процедура или функция рассматриваются как данные.

Идея единства данных и подпрограмм занимает одно из основных мест в объектно-ориентированном программировании. В языке JavaScript идея процедурных типов данных реализована с помощью функции eval. Функция eval получает в качестве параметра строку. Если строка представляет собой выражение языка JavaScript, то вычисляется ее значение и возвращается как результат функции eval.







Сейчас читают про: