JavaScript 局部变量和全局变量比较及奇怪的未声明变量
时间:2015-01-07 16:57 来源: 英汉互译 作者:山风
JavaScript 局部变量和全局变量比较,还附带奇怪的未声明变量唷
全域变量( global variable )和区域变量( local variable )的声明和用法不知道是不行的唷。
本篇简单明了地说明全域变量和区域变量的差异,并举一些小例子。
然后就如标题所说,本篇真的会附赠告诉大家 JavaScript 中的未声明变量( undeclared variable )是什么东东。
局部变量( local variable )
1)、在 function 中声明;
2)、只能在声明的 function 中使用( local scope );
3)、不同的 function 中可声明相同名称的局部变量;
4)、在声明变量 function 结束时,局部变量也就没有作用了。
全局变量( global variable )
1)、在 function 外声明
2)、整个网页中的 script 包含 function 都可以存取该变量( global scope )
3)、同一个网页中不能声明相同的全局变量名称( 是可以啦,但后声明的会覆盖掉之前声明的 )
4)、在网页关闭时,全局变量失效。
例子:
myHtml.html
<html><body><head><script type="text/javascript" src="myJavascript.js"></script></head><input id="btn1" type="button" onclick="outputglobal()" value="按下调用 outputglobal()函数"><input id="btn2" type="button" onclick="outputlocal()" value="按下调用 outputlocal()函数"></body></html>
myJavascript.js
var a=0;function outputglobal(){alert("a="+a);alert("b="+b);}function outputlocal(){var b=0;alert("a="+a);alert("b="+b);}
按下 btn2 时会跳出两个提示窗口,分别是 a=0 和 b=0,
虽然我们在 outputlocal() 中只声明和定义变量 b,但 a 是定义在 function 外的全域变量,因此我们仍可以存取其值 0。
按下 btn1 时只会跳出一个提示窗口 a=0,
因为 btn1 的 onClick 事件所调用的 outputglobal() 中,并未定义变量 b。
未声明变量( undeclared variable )
因为 JavaScript 相对其他程序语言来说,算是比较不严谨的语言,
因此会有像这种未定义的变量出现。
所谓的"未定义",指的是没有使用关键字 var 来在使用某变量前声明该变量。如,
var mood="happy";//声明(*注)myName="Coyan";//未声明就直接用了
而这样未声明就直接使用变量居然是可以的(真随便阿),
若是在 function 外,其效果等同于声明为全域变量;
若是在 function 内,其效果等同于声明为区域变量。
不过良心建议是还是打一下" var " 吧,才三个字母而已啊,这样源程序也可以一目了然知道是在声明变量。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
