Chrome 和 Firefox 之间的 JavaScript 范围差异

标签 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;
}

最佳答案

看来 Firefox 对 ECMA 标准的解释要严格得多。我在代码片段中遗漏的是整个内容都在 if block 内。显然,在这种情况下,在 Firefox 中执行的 JavaScript 将无法在声明之前调用 setDefault。有趣的是,这段代码可以在其他浏览器中运行,但在 Firefox 中会爆炸。吸取的教训。

关于Chrome 和 Firefox 之间的 JavaScript 范围差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453962/

相关文章:

变量的 JavaScript 设置值失败

html - CSS 属性 Box-Sizing 对盒子模型没有影响

jquery - 火狐错误-NS_ERROR_XPC_NOT_ENOUGH_ARGS : Not enough arguments

python - python函数是线程安全的吗? (特别是这个?)

javascript - Angular TypeScript JavaScript 词典范围在第三方 API 事件处理程序的嵌套函数中丢失

javascript - IE 中的合法 JSON 给出错误 : Expected identifier, 字符串或数字

javascript - dojo.addOnLoad() 永远不会在 GWT 页面中触发

javascript - 将 javascript 变量存储在数组中

javascript - 如何在不使用 JS 按下任何键的情况下检测 CAPS LOCK STATUS 是否处于事件状态?

javascript - typeof document ['domConfig'] 在 Firefox 中出现错误