每日一JavaScript:变量的作用范围

下面的内容都摘抄自JavaScript相关书籍。
(1)全局变量的作用域是全局性的,即在整个Javascript程序中,全局变量处处都存在。一般定义在”script”块中,在”function”函数外。
(2)而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。
(3)在函数内部,局部变量的优先级比同名的全局变量优先级要高:如果存在与全局变量名称相同的局部变量,或者在函数内部声明了与全局变量同名的参数,那么,该全局变量将不再起作用。


<script type="text/javascript">
<!--
var myvar="全局变量";   //声明一个全局变量
function checkscope()
{
var myvar="局部变量";   //声明一个同名的局部变量
document.write(myvar); //使用的是局部变量,而不是全局变量
}
checkscope();          //调用函数,输出结果
//-->
</script>

最后的输出结果是:局部变量。

虽然在全局作用域中可以不使用var声明变量,但在声明局部变量时,一定要使用var语句。一般情况下,函数并不知道全局变量作用域中定义了什么变量,也不知道这些变量的作用。如果函数使用的是全局变量,而不是局部变量,那么可能改变程序其他部分所依赖的全局变量的值。因此,最好在声明所有变量时都使用var语句

JavaScript没有块级作用域,函数中声明的所有变量无论是在哪里声明的,在整个函数中都有意义。在下面的代码中,变量x,y,z作用域相同,在整个函数体中都有意义。


function test(q) {
var x=0;                          //在整个函数中,x都有意义
if(typeof(q)=="object") {
var y=0;                     //y不仅在if块中有意义,在整个函数中都有意义
for(var z=0;z<5;z++) {       //z不仅在for循环中有意义,在整个函数中都有意义
document.write(z);
}
document.write(z);           //z仍旧有意义,输出5
}
document.write(y);                //y仍旧有意义
}


4 Responses to “每日一JavaScript:变量的作用范围”

  1. 您好,请问如果我要在wp的博文里面引用一个网页应该如何操作?

    我发现一个小游戏,很好,就做成了html页面,但是不知道如何发到博客里面去。

  2. 胡戈戈 says:

    @诗意地栖息在大地上 请你将网页地址给我看下

  3. Yacca says:

    新建一个page,然后套用这个页面?

  4. Alan says:

    看来你在想JS进发 😀

Post a Comment