javascript - 函数对象是否必要

标签 javascript function object

创建函数很常见也很容易:

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

那么为什么函数对象像:

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

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

为什么是函数对象?

最佳答案

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

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!';

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

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}

关于javascript - 函数对象是否必要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749546/

相关文章:

javascript - D3.js 条形图上的分组条形图文本

javascript - 选取框停止加载

c++ - 如何在设置字符串值时优化函数调用?

objective-c - 编辑 NSMutableArray 中的一个对象也会更改 NSMutableArray 中的另一个对象

C++:按值将对象传递给同一类的成员函数

javascript - vue数据函数语法

javascript - jQuery 在 DOM 中移动 div

javascript - 如何使用 JS 制作改变网格尺寸的按钮?

javascript - 使用 JavaScript Cookie 的建议

javascript - jquery对象执行对象的分配函数