Firefox 7 中的 Javascript 匿名函数

发布于 2024-12-07 03:23:02 字数 368 浏览 0 评论 0原文

更新到 Firefox 7 后,我收到以下错误:

函数语句需要名称

这个特定的函数被定义为

fun = eval("function (item) { //Function body }");

如果我将其重写为:

fun = eval("function view(item) { //Function body }");

错误不再显示,但程序仍然无法运行。

Ps.-我知道评估字符串不是一个好主意。这是一个我必须修复的遗留应用程序,其中一些函数是按需从数据库作为字符串下载的。

After updating to Firefox 7, I am getting the following error:

function statement requires a name

This particular functions is defined as

fun = eval("function (item) { //Function body }");

If I rewrite it as:

fun = eval("function view(item) { //Function body }");

The error does not show up any more, but the program still does not work.

Ps.- I know that evaluating a string is not a good idea. This is a legacy application that I have to fix in which some functions are downloaded from a database as strings on demand.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

盛夏尉蓝 2024-12-14 03:23:02

将其括在括号中

eval("(function (item) { alert('hello'); })");

但这没有意义,因为它什么也没做。也许你想要:

eval("(function () { alert('hello'); })()");

或者

eval("var func = function (item) { };");

Wrap it in brackets

eval("(function (item) { alert('hello'); })");

But that doesn't make sense as it does nothing. Maybe you want:

eval("(function () { alert('hello'); })()");

Or

eval("var func = function (item) { };");
心如狂蝶 2024-12-14 03:23:02

函数声明(就是您所拥有的)需要规范的标识符。

function() {
}

就像 ES 规范不允许的那样(即使某些浏览器可能允许)。只有函数表达式可以是匿名的。

A function declaration (is what you've got there) requires an identifier by spec.

function() {
}

just like that is not allowed by ES specification (even if some browsers might allow it anyway). Only function expression may be anonymous.

空心空情空意 2024-12-14 03:23:02

只是一个猜测,也许可以尝试:(

fun = eval("return function (item) { //Function body }");

我刚刚添加了 return 语句)

just a guess, maybe try with:

fun = eval("return function (item) { //Function body }");

(I just added the return statement)

纵性 2024-12-14 03:23:02

如果函数被定义为字符串并且您希望使用它而不是每次都调用 eval,您可以这样做:

var myFunc = 'function(){alert("myFunc");}';    
var fun = eval('(function(){return '+myFunc+'})()');
fun();

或者只是

var myFunc = 'function(){alert("myFunc");}';    
var fun = eval('('+myFunc+')');
fun();

if the function is defined as a string and you wish to use it without calling eval everytime, you could do this:

var myFunc = 'function(){alert("myFunc");}';    
var fun = eval('(function(){return '+myFunc+'})()');
fun();

Or just

var myFunc = 'function(){alert("myFunc");}';    
var fun = eval('('+myFunc+')');
fun();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文