function jsEvalToFunction(expr) {
  if (!JsEvalContext.evalToFunctionCache_[expr]) {
    try {
      // NOTE(mesch): The Function constructor is faster than eval().
      JsEvalContext.evalToFunctionCache_[expr] =
        new Function(STRING_a, STRING_b, STRING_with + expr);
    } catch (e) {
      log('jsEvalToFunction (' + expr + ') EXCEPTION ' + e);
    }
  }
  return JsEvalContext.evalToFunctionCache_[expr];
}
Evaluates the given expression as the body of a function that takes
vars and data as arguments. Since the resulting function depends
only on expr, we cache the result so we save some Function
invocations, and some object creations in IE6.

@param {string} expr A javascript expression.

@return {Function} A function that returns the value of expr in the
context of vars and data.