JavaScript变量
变量以字母、$或者_符号开头,且区分大小写(JavaScript语言本身就是大小写敏感的),函数外部声明的是全局变量,函数内部使用var声明的变量为局部变量,函数内部不使用var声明的变量也为全局变量
var x ; //声明变量(未赋值时值为undefined, type of x的值也为undefined)
var y = "hello"; //声明并赋值
z = 10; //不带var声明的变量为全局变量
重新声明 JavaScript 变量,该变量的值不会丢失:
var a = "hello";
var a;
以上两条语句执行后,变量a的值依然是 "hello"
JavaScript变量作用域
具体说明:
1.JavaScript没有块级作用域
<script type="text/javascript" language="javascript">
var x = 1;
for(int x=0; x < 2; x++)
{
alert( x ); //弹出0,1
}
alert(x); //弹出1
</script>
2.函数体内部,局部变量的优先级比同名的全局变量高
3.未使用var关键字定义的变量都是全局变量
4.函数中声明的变量在整个函数中都有定义
下面的代码比较有意思,说明了这个问题:
<script type="text/javascript" language="javascript">
var x = 1;
function test(){
alert( x ); //弹出 'undefined',而不是1
var x = 'hello';
alert( x ); //弹出 'hello'
}
test()
</script>
此处由于test函数内定义的局部变量x(与全局变量同名),而函数内声明的局部变量在整个函数体中都有意义,故在此函数中所有的x都是指局部变量x(全局变量x在函数体内已被隐藏了),又由于第一次调用alert(x)的时候,x尚未被赋值,故其值为undefined,赋值之后就有具体的值了
5.全局变量都是window对象的属性
<script type="text/javascript" language="javascript">
var x = 123 ;
alert( window.x );//弹出123
alert(x);
</script>
或者
<script type="text/javascript" language="javascript">
window.x = 123;
alert( window.x );
alert(x)
</script>
重点注意:JavaScript没有块级作用域;未使用var关键字定义的变量都是全局变量
1176

被折叠的 条评论
为什么被折叠?



