JavaScript 有一个Function
构造函数,它产生一个匿名函数:
new Function()
将函数作为参数传递给 时Function
,出现语法错误:
new Function(function(){})
生产
SyntaxError:意外的令牌(
但是,当我传递一个数字时,一切都很好:
new Function(10)
为什么将函数传递给时会出现语法错误Function
?
JavaScript 有一个Function
构造函数,它产生一个匿名函数:
new Function()
将函数作为参数传递给 时Function
,出现语法错误:
new Function(function(){})
生产
SyntaxError:意外的令牌(
但是,当我传递一个数字时,一切都很好:
new Function(10)
为什么将函数传递给时会出现语法错误Function
?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
考虑到除了最后一个参数之外的所有参数都是参数名称,我不希望字符串以外的任何东西都可以工作。
我想语法错误是因为您在内部使用的 JS 引擎尝试将函数转换为字符串的方式。我真的很惊讶它没有在 10 上窒息。
另外,我怀疑你这样做只是出于好奇,但如果你不是,我建议你不要Function
在你可以控制的代码中使用。没有真正的理由使用 Function ,除非您需要在运行时获取一个字符串并从中创建一个函数。
因为 Function 构造函数需要 String 参数并将最后一个作为函数体,所以期望它是有效的 javascript。当它尝试将匿名函数参数评估为字符串时,它会失败,因为该匿名函数的字符串表示形式不是有效的 javascript。
我不知道那个错误,但你可以尝试这样的事情:
var func = function(){};
new Function(func)
我建议使用:
new Function(func)
代替
new Function(func(){})
您必须将 func 定义为单独的函数。以下示例演示:
<html>
<script>
function init(func)
{
func();
}
function greet()
{
alert("good morning!");
}
</script>
<body onLoad="init(greet);">
<body>
</html>