JavaScript之全局变量和局部变量

全局变量可以在js脚本的任何地方被引用,一旦某个脚本声明了一个全局变量,则该变量的作用域就是整个脚本

局部变量只存在于它做出声明的函数内部,函数外部无法引用它,局部变量的作用域仅限于某个特定函数

函数内部既可以用局部变量又可以用全局变量,如果某个函数中使用var声明,则那个变量就被视为局部变量,它将只存在于这个函数的上下文中,反之,如果没有使用var声明,则那个变量就被视为全局变量,如果你的脚本库里已经存在一个与之同名的变量,这个函数将覆盖那个现有的变量的值

function double(num)
{
total=num*num;
return total;
}
var total=20;
var number=double(10);
alert(total);

这段代码将更改全局变量total的值,如果不想修改total的值则只需在函数内用var声明total即可,函数内局部变量将覆盖全局变量

以下分享一个关于全局变量和局部变量有意思的问题

<script type="text/javascript">
var a=10;
function test()
{
alert(a);
var a=2;
alert(a);
}
test();
alert(a);
</script>

一眼看过去结果是不是10 2 10,然而实际却不是,正确答案是undefined 2 10,这是为什么呢?

因为局部变量的作用域是某一个特定的函数,所以只要在函数中定义了一个局部变量,不论这个定义放的位置在哪,它都是一个局部变量,所以第一个alert(a)中的a是局部变量,但由于它的赋值在接下来的一行,所以它就显示undefined,如果即使是按照这个顺序依然想输出全局变量的a,则只需将函数中的第一个alert(a)修改为alert(window.a)即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值