Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Internet Explorer 7+;即使条件为false,8也在内部执行变量声明_Javascript_Jquery_Internet Explorer_If Statement - Fatal编程技术网

Javascript Internet Explorer 7+;即使条件为false,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

以下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.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作用域的方式不同。

代码在哪个作用域中执行。。。它是否在全局范围内执行?代码在哪个范围内执行。。。它是在全球范围内执行的吗?可能是一些进一步有用的阅读:可能是一些进一步有用的阅读:谢谢-与解释的伟大链接。谢谢-与解释的伟大链接。