功能对象是否必要 [英] Is Function object necessary
本文介绍了功能对象是否必要的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
创建函数通常很容易,
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屋!
查看全文