以下 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/