在互联网上搜索时,我找到了两种编写javascript函数的方法。
一个是Function()
构造函数
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
其次是简单的定义功能
var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);
当我在上述两种方法中使用时,我发现这两种方法没有区别。
这两个之间是否存在差异,或者是否使用了函数构造函数??
答案 0 :(得分:2)
Object-Oriented JavaScript - Second Edition :使用时 Function()构造函数,首先传递参数名称(as 字符串)然后是函数体的源代码(再次 作为一个字符串)。 JavaScript引擎需要评估源代码 你传递并为你创建新功能。这个源代码 评估遇到与eval()函数相同的缺点, 所以使用Function()构造函数定义函数应该是 尽可能避免。
var first = new Function(
'a, b, c, d',
'return arguments;'
);
first(1, 2, 3, 4); // [1, 2, 3, 4]
var second = new Function(
'a, b, c',
'd',
'return arguments;'
);
second(1, 2, 3, 4); // [1, 2, 3, 4]
var third = new Function(
'a',
'b',
'c',
'd',
'return arguments;'
);
third(1, 2, 3, 4); // [1, 2, 3, 4]
最佳实践:不要使用Function()构造函数。与eval()一样 和setTimeout(),总是试图远离传递JavaScript代码 作为一个字符串。
有什么区别?请参阅@ Greg的answer