功能对象是否必要 [英] Is Function object necessary

查看:54
本文介绍了功能对象是否必要的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

创建函数通常很容易,

var f = function(){
    alert("something");
};

那么为什么会有 Function对象,如:

var f = new Function("alert('something');");

后者很难写/读.我只能想出一种情况,有人在网页上输入一些JS代码并运行它.这也可以通过 eval 解决.

The latter is hard to write/read. I can only come up with one situation in which someone typing some JS code to the webpage and running it. This can also be solved with eval.

为什么要使用功能对象?

Why Function object?

推荐答案

Function 对象可用于动态生成函数.

The Function object can be used to dynamically generate functions.

var some_fixed_value = 1;
var f = new Function("return " + some_fixed_value);

相反:

var some_fixed_value = 1;
var f = function() {
    return some_fixed_value;
};
// Break the function logic:
some_fixed_value = 'not_fixed_any_more!';

或,使用两个函数表达式:

or, using two function expressions:

var f = (function(copy_of_fixed_value) {
    return function() {
        return copy_of_fixed_value;
    };
})(some_fixed_value);

这也可以通过 eval 解决":

var func_func = new Function('x', 'return x');  //function anonymous(x){return x}
var evil_func = eval('function(x){return x}');  //SyntaxError: function statement
                                                // requires a name
var eval_func = eval('(function(x){return x})');//function(x){return x}

这篇关于功能对象是否必要的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆