我编写了一个 jQuery 插件来强制在输入字段中输入数值,它在 Chrome 和 Safari 中运行良好,但在 Firefox 中则不行。我发布了下面的一段脚本,在 Firefox 中,它在第一行失败,并出现错误 ReferenceError: setDefault is not Defined
。为什么这条线在 Firefox 中不起作用?
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;
}
最佳答案
看来 Firefox 对 ECMA 标准的解释要严格得多。我在代码片段中遗漏的是整个内容都在 if
block 内。显然,在这种情况下,在 Firefox 中执行的 JavaScript 将无法在声明之前调用 setDefault
。有趣的是,这段代码可以在其他浏览器中运行,但在 Firefox 中会爆炸。吸取的教训。
关于Chrome 和 Firefox 之间的 JavaScript 范围差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453962/