讨论Javascript中声明全局变量的三种方法的异同
变量和变量的声明是语言最基本的概念,初学者会很快掌握它。Javascript中的声明变量也是如此,这是非常简单的var(关键字)+变量名(标识符)。模式1
VAR方法;
var测试= 5;重要的是要注意这个句子不能包含在函数中,否则它是一个局部变量,这是声明全局变量的第一种方式。
模式2
测试= 5;
如果不使用var,则直接指定标识符测试,后者隐式声明全局变量测试。即使语句在函数中,测试也在函数执行时成为全局变量。
模式3
window.test;
window.test = 5;这种方法是经常使用在一个匿名函数执行时暴露出一些功能到全球。在jquery1.5最后一句
window.jquery =美元= jQuery的窗口;
如果只使用变量测试,那么这三种方法之间没有区别。例如,警报(测试)将显示5。但是三种方法在某些情况下仍然不同。三个变量,A1,A2,A3,分别在上述三种方式中声明。
A1=11;
var=22;
window.a3 = 33;
1,用于窗口
对于(在窗口中){
如果(= = = = |步骤的| 'a2| | = = 'a3){
警报(a)
}
}
IE6 / 7 / 8 / 9:只有A3弹出,显示全球声明的变量在第一、第二的方式将无法获得时,通过在窗口。
火狐、Opera、A1、A2和A3都跳出了,表明以三种方式声明的全局变量可以通过在窗口中获得。
2、删除
{试
警报(删除A1);
} catch(e){ alert('inability删除A1})
尝试{
警报(删除A2);
} catch(e){ alert('inability删除A2})
尝试{
警报(删除A3);
} catch(e){ alert('inability删除A3})
给出如下结果
你可以看到,
1,删除所有浏览器都是错误的,也就是说,通过var声明的变量不能被删除,所有浏览器都是一致的。
2、全局变量声明的window.a3不能在IE6 / 7 / 8删除,但在IE9 / / / Safari浏览器Firefox或Opera。
虽然以上两点不同,但当使用时,它们都返回true。
警报('a1'in窗口); / /真的
警报('a2'in窗口); / /真的
警报('a3'in窗口); / /真的
当使用对象窗口闭包打开时,所有浏览器都是一致的,如下所示
用(窗口){
如果(A1){
警报(A1);11
}
如果(A2){
警报(A2);22
}
如果(A3){
警报(A3);33
}
}