创建函数很常见也很容易:
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/