我在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实现支持使用
FunctionDeclarationasStatement.然而,在应用于此类FunctionDeclarations的语义中的实现之间存在显着且不可调和的变化.由于这些不可调和的差异,使用FunctionDeclarationa会Statement导致代码在实现中无法可靠地移植.建议ECMAScript实现在FunctionDeclaration遇到此类用法时不允许使用此类用法或发出警告.ECMAScript的未来版本可以定义用于在Statement上下文中声明函数的替代可移植方法 .
这意味着我们无法保证在这种情况下的一致行为,因此,strict mode如果在语句中声明了函数,我们将始终获得异常.
| 归档时间: |
|
| 查看次数: |
1089 次 |
| 最近记录: |