手机版

讨论JavaScript中声明全局变量的三种方式的异同

时间:2021-11-12 来源:互联网 编辑:宝哥软件园 浏览:

变量声明和变量声明是一门语言最基本的概念,初学者很快就会掌握。对于在JavaScript中声明的变量也是如此,简单来说就是var(关键字)变量名(标识符)。1var测试;var测试=5;需要注意的是,这句话不能包含在函数中,否则就是局部变量。这是声明全局变量的第一种方式。模式2test=5;没有var,直接赋值标识符测试,这会隐式声明全局变量测试。即使语句在函数中,测试也会在函数执行后变成全局变量。方法3window.testwindow . test=5;这种方法通常用于在执行匿名函数后向全世界公开一些函数。例如,JQuery1.5中的最后一句话是window.jQuery=window。$=jQuery如果只使用变量检验,三种方法之间没有区别。例如,警报(测试)将显示5。然而,在某些情况下,这三种方法仍然不同。用上面三种方法声明三个变量a1、a2和a3。a1=11var a2=22window.a3=331,for in window for(a in window){ if(a==' a1 ' | | a=' a2 ' | | a==' a3 '){ alert(a)} } ie6/7/8/9:仅弹出a3,表示当第一个和第二个方法声明的全局变量通过for in window时。火狐/Chrome/Safari/Opera: A1、A2、A3全部弹出,表示可以通过for in window获取三种方式声明的全局变量。2、deletetry {alert(删除a1);}catch(e){alert('不能删除a1 ')}请尝试{alert(删除a2);}catch(e){alert('不能删除a2 ')}请尝试{alert(删除a3);}catch(e){alert('无法删除a3')}结果如下

可以看到,1、delete a2中的所有浏览器都是假的。也就是说,var声明的变量不能被删除,所有浏览器的行为都是一致的。犀牛书里也有提到。2.window.a3声明的全局变量不能在IE6/7/8中删除,但可以在IE9/Firefox/Chrome/Safari/Opera中删除。虽然上面有两个区别,但是在操作的时候都还真。警报(“窗口”中的“a1”);//truealert('a2 '在窗口中);//truealert('a3 '在窗口中);//true当用with打开对象窗口闭包时,所有浏览器也显示相同的性能,如下所示:with(window){ if(a1){ alert(a1);//11 } if(a2){ alert(a2);//22 } if(a3){ alert(a3);//33}}

版权声明:讨论JavaScript中声明全局变量的三种方式的异同是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。