Javascript Internet Explorer 7+;即使条件为false,8也在内部执行变量声明
以下JavaScript在除IE 7和IE 8之外的所有浏览器中都能正常工作:Javascript Internet Explorer 7+;即使条件为false,8也在内部执行变量声明,javascript,jquery,internet-explorer,if-statement,Javascript,Jquery,Internet Explorer,If Statement,以下JavaScript在除IE 7和IE 8之外的所有浏览器中都能正常工作: if (typeof django != 'undefined') { console.log('Django admin loaded'); var jQuery = django.jQuery; } if (typeof django != 'undefined') { console.log('Django admin loaded'); jQuery = django.jQu
if (typeof django != 'undefined') {
console.log('Django admin loaded');
var jQuery = django.jQuery;
}
if (typeof django != 'undefined') {
console.log('Django admin loaded');
jQuery = django.jQuery;
}
这段代码位于加载在Django的管理界面和公共页面中的JavaScript文件之上。Django的管理员加载自己的jQuery,所以我们最好使用这个jQuery
但是,即使条件(typeof django!=“undefined”)
为false
,IE 7和IE 8也会在该if语句中执行变量赋值。同时,不会执行console.log()
:-/删除var
关键字,同样的代码在IE 7和IE 8中也能完美工作:
if (typeof django != 'undefined') {
console.log('Django admin loaded');
var jQuery = django.jQuery;
}
if (typeof django != 'undefined') {
console.log('Django admin loaded');
jQuery = django.jQuery;
}
但是为什么呢?这没有任何意义,是吗?所有浏览器都会这样做。它叫
由于您正在定义jQuery
,您可能希望将其作为一个全局变量,因此window.jQuery=django.jQuery
应该就可以了。所有浏览器都可以这样做。它叫
由于您正在定义
jQuery
,您可能希望将其作为一个全局变量,因此window.jQuery=django.jQuery
应该就可以了。如果您定义var关键字,那么您需要这样做:
if (typeof django != 'undefined') {
console.log('Django admin loaded');
var jQuery = django;
django.jQuery; // or django = django.jQuery
}
如果定义var关键字,则需要执行以下操作:
if (typeof django != 'undefined') {
console.log('Django admin loaded');
var jQuery = django;
django.jQuery; // or django = django.jQuery
}
javascript中没有块作用域(请参阅此处了解JS作用域的更多详细信息:) 您的初始代码没有多大意义-如果您试图设置全局jQuery变量,那么您的代码应该是:
if (typeof django != 'undefined') {
console.log('Django admin loaded');
jQuery = django.jQuery;
}
您看到的可能与IE7和IE8处理JS作用域的方式不同。javascript中没有块作用域(请参阅此处了解JS作用域的更多详细信息:) 您的初始代码没有多大意义-如果您试图设置全局jQuery变量,那么您的代码应该是:
if (typeof django != 'undefined') {
console.log('Django admin loaded');
jQuery = django.jQuery;
}
您看到的可能与IE7和IE8处理JS作用域的方式不同。代码在哪个作用域中执行。。。它是否在全局范围内执行?代码在哪个范围内执行。。。它是在全球范围内执行的吗?可能是一些进一步有用的阅读:可能是一些进一步有用的阅读:谢谢-与解释的伟大链接。谢谢-与解释的伟大链接。