javascript 变量的作用范围
来源:互联网 发布:现代汝窑瓷器淘宝 编辑:程序博客网 时间:2024/05/22 06:34
变量的作用范围又称为作用域,是指某变量在程序中的有效范围。根据作用域,变量可以分为全局变量和局部变量。
1 全局变量的作用域是全局性的,即在整个JavaScript程序中,全局变量处处都在。
2 而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。
在函数内部,局部变量的优先级比同名的全局变量优先级要高;如果存在与全局变量名称相同的局部变量,或者在函数内部声明了与全局变量同名的参数,那么,该全局变量将不再起作用。如下例子:
<script language="javascript" type="text/javascript">
<!--
var a = "我是一个全局变量";
function check()
{
var a = "我是一个局部变量";
document.write(a);
}
check();
//-->
</script>
<!--
var a = "我是一个全局变量";
function check()
{
var a = "我是一个局部变量";
document.write(a);
}
check();
//-->
</script>
输出:
我是一个局部变量
虽然在全局作用域中可以不使用var声明变量,但在声明局部变量时,一定要使用var语句。一般情况下,函数并不知道全局作用域中定义了什么变量,也不知道这些变量的作用。如果函数使用的是全局变量,而不是是局部变量,那么就可能改变程序其他部分所依赖的全局变量的值。因此,最好在声明所有变量时都使用var语句。
JavaScript没有块级作用域,函数中声明的所有变量无论是在哪里声明的,在整个函数中都有意义。在下面代码中,变量i,j,k作用域相同,在整个函数体中都有意义。看下下面例子:
<script language="javascript" type="text/javascript">
<!--
function check()
{
var i = 0;
if(i == 0)
{
var j = 1;
for(var k = 0;k < 1;k ++)
{
document.write("k在循环体内的值为:" + k + "<br />");
}
document.write("k在循环体内的值为:" + k + "<br />");
}
document.write("j在if语句外的值为:" + j);
}
check();
//-->
</script>
<!--
function check()
{
var i = 0;
if(i == 0)
{
var j = 1;
for(var k = 0;k < 1;k ++)
{
document.write("k在循环体内的值为:" + k + "<br />");
}
document.write("k在循环体内的值为:" + k + "<br />");
}
document.write("j在if语句外的值为:" + j);
}
check();
//-->
</script>
输出:
k在循环体内的值为:0
k在循环体内的值为:1
j在if语句外的值为:1
k在循环体内的值为:1
j在if语句外的值为:1
0 0
- javaScript变量的作用范围
- javascript 变量的作用范围
- Javascript变量作用范围
- 在javascript中变量的作用范围
- 在javascript中变量的作用范围
- Javascript 中变量的作用范围引发的bug
- 内存变量的作用范围
- Java变量的作用范围
- 02 变量的作用范围
- 静态变量的作用范围
- PHP的变量作用范围
- Java变量的作用范围
- javascript基础:函数传递参数的方式、参数数组、变量范围(变量作用域)
- 变量的作用域的范围问题
- 黑马程序员_变量的作用范围
- 线程中变量的作用范围
- shell export变量的作用范围
- C语言中变量的作用范围
- js基本属性介绍
- Codeforces#304-D - Soldier and Number Game-求因子个数/数学
- Lambda表达式理解【匿名方法】
- Adapter模式
- 学习资源搜集
- javascript 变量的作用范围
- 动态代理模式
- 黑马程序员——C语言学习笔记06 结构体
- Android设备相关
- ETC1压缩纹理格式详解
- 蓝的成长记——追逐DBA(20):何故缘起,建库护航 (二次发布-练习使用markdown编辑)
- LightOj 1268 Unlucky Strings (KMP+矩阵快速幂)
- TesterHome android app 编写历程(六)
- undefined reference to `av_register_all'