【问题标题】:JavaScript function not defined in Firefox?Firefox 中没有定义 JavaScript 函数?
【发布时间】:2012-02-07 06:50:43
【问题描述】:

我目前正在 Firefox 中调试我的网站的下一层,并在我的 JavaScript 中发现了一个非常奇怪的错误。在 Firefox 中,是否需要在引用这些函数的任何代码行之上定义函数?这对我来说真的很奇怪。

这是导致错误的简化版本:

var myClass = new MyClass(myCallback);

function myCallback() {
    // code
}

它抛出了以下错误:Error: myCallback is not defined

这是我在 Firefox 中需要做的事情:

var myCallback = function() {
    // code
}

var myClass = new MyClass(myCallback);

所以我的问题是:这是正常行为还是发生了其他事情?我的意思是,我以后在编码时需要考虑到这一点吗?

【问题讨论】:

  • 这不会在 FF 3.6 中引发错误:jsfiddle.net/nrabinowitz/CRTBK - 你确定你没有使用var myCallback = function() { ... }
  • 您引用的代码是在 if 块内还是什么?
  • 第二个 Boris,我遇到了同样的问题,因为我的函数在 if 中,并且因为它使用的是在我设置回调后定义的变量,所以它必须在之后。

标签: javascript debugging firefox error-handling


【解决方案1】:

使用格式启动时,必须在调用之前定义函数:

myCallback = function() {
    // code
}

但是当您使用格式启动时,应该可以在任何地方定义:

function myCallback() {
    // code
}

【讨论】:

  • 乍一看似乎是一个任意规则,但我希望以第二种格式定义的函数定义一次,并在执行时预编译,但分配给它们的函数的变量可以更改,因此必须在分配后引用,并且在被调用之前可能多次交换/更改
  • 在 FireFox 中有一个 odd behavior 我在其他任何地方都没有见过:
猜你喜欢
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 2014-04-21
  • 2012-08-28
  • 2011-02-01
相关资源
最近更新 更多