Chrome与Firefox之间的JavaScript范围差异

时间:2014-06-27 14:12:05

标签: javascript firefox scope

我写了一个jQuery插件来强制输入字段中的数值,它在Chrome和Safari中运行良好,但在Firefox中却不行。我在下面发布了一段脚本,在Firefox中,它在第一行失败,错误为ReferenceError: setDefault is not defined。为什么这条线不适用于Firefox?

Link to full script

isDollar = setDefault(options.isDollar, isDollar);
isReal = setDefault(options.isReal, isReal);
allowDecimal = setDefault(options.allowDecimal, allowDecimal);
allowNegative = setDefault(options.allowNegative, allowNegative);
maxDigits = setDefault(options.maxDigits, maxDigits);

function setDefault(myVar, defaultVal){
    if(typeof myVar === "undefined") myVar = defaultVal;
    return myVar;
}

1 个答案:

答案 0 :(得分:1)

似乎Firefox对ECMA标准有更严格的解释。我从代码片段中遗漏的是整个事情都在if块内。显然,在这种情况下,在Firefox中执行的JavaScript在声明之前将无法调用setDefault。有趣的是,这段代码可以在其他浏览器中使用但在Firefox中爆炸。经验教训。