无法找到Javascript函数

dot*_*oob 1 javascript jquery

我在document.ready()中有以下代码

if ($("#site-master").length > 0) {

    setMinContentHeight();

    function setMinContentHeight() {

        // removed for clarity
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是检查页面是否正确(#site-master),然后调用我的最小高度函数,但是我在firebug中遇到以下错误:ReferenceError:setMinContentHeight未定义.

我不是javascript专家,但这怎么可能呢?如果我将它移到document.ready()之外,该函数可以工作.我已经检查过了if语句中的代码.

此外,这是实现我想要的最佳方式吗?

提前致谢.

Vis*_*ioN 10

永远不要在里面声明你的功能if或for声明:

function setMinContentHeight() {
    // removed for clarity
}

if ($("#site-master").length > 0) {
    setMinContentHeight();
}
Run Code Online (Sandbox Code Playgroud)

如果我们解决ECMAScript规范,根据第12章,if第被认为是一个声明(以及for,while,with,try/catch,等等).

因此,继注:从语义部分:

已知几种广泛使用的ECMAScript实现支持使用FunctionDeclarationas Statement.然而,在应用于此类FunctionDeclarations的语义中的实现之间存在显着且不可调和的变化.由于这些不可调和的差异,使用FunctionDeclarationa会 Statement导致代码在实现中无法可靠地移植.建议ECMAScript实现在FunctionDeclaration遇到此类用法时不允许使用此类用法或发出警告.ECMAScript的未来版本可以定义用于在Statement上下文中声明函数的替代可移植方法 .

这意味着我们无法保证在这种情况下的一致行为,因此,strict mode如果在语句中声明了函数,我们将始终获得异常.