javascript - Internet Explorer 7+8 即使条件为假,也会在 IF 内执行变量声明

标签 javascript jquery internet-explorer if-statement

以下 JavaScript 在除 IE 7 和 8 之外的所有浏览器中都能正常工作:

if (typeof django != 'undefined') {
    console.log('Django admin loaded');
    var jQuery = django.jQuery;
}

此代码位于 Django 管理界面和我们的公共(public)页面中加载的 JavaScript 文件之上。 Django 的管理加载它自己的 jQuery,所以我们最好使用那个 ...

但是,IE 7 和 8 会在该 if 语句中执行变量赋值,即使条件 (typeof django != 'undefined')false 也是如此。同时,console.log() 不会执行:-/删除 var 关键字,相同的代码在 IE 7 和 8 中也能完美运行:

if (typeof django != 'undefined') {
    console.log('Django admin loaded');
    jQuery = django.jQuery;
}

但是为什么?这没有任何意义,是吗?

最佳答案

所有浏览器 都会这样做。它叫做hoisting .

function test() {
    if( false) {
        var abc;
    }
    alert(abc); // expect ReferenceError, get undefined
}

由于您正在定义 jQuery,您可能希望将其作为全局变量,因此 window.jQuery = django.jQuery 应该这样做就好了。

关于javascript - Internet Explorer 7+8 即使条件为假,也会在 IF 内执行变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259783/

相关文章:

javascript - 通过javascript创建一个spring表单并附加到div中

javascript - 访问 getTooltipText(e) 事件中的数据行?

jquery - 电子邮件分隔符类似于 gmail

javascript - 在 Rails 4 中使用 Jquery Raty 并显示平均星级

jquery - 如何让 jQuery $ ('#div' ).html() 在 IE7+ 中工作?

javascript - 设置数据库 javascript 中 html 输入数量的最大值

javascript - 这两个 'isInArray' 函数的区别?

javascript - 在 rails 中使用 jquery 显示工具提示

internet-explorer - 无法在IE中打开xls文件

css - flex 容器中的文本不会在 IE11 中换行