JavaScript的变量作用域和闭包操作

本文深入探讨JavaScript中的闭包概念,通过实例讲解变量作用域、函数内部变量访问规则,并展示如何利用闭包特性实现变量计数器。

JavaScript的闭包

变量的作用域:

每个函数来定义作用域,函数内部用var来声明的,他们的作用域只在本函数内有用。函数可以用来创造函数作用域。此时的函数像一层半透明的玻璃,在函数里面可以看到外面的变量,而在函数外面无法看到函数里的变量。

我们先来看一个例子,在例子中我们定义了三个函数,分别是funa ,funb,func,在每个函数里我们都用 var独自声明了一个变量,然后进行打印。(代码)

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
varfuna=function(){
    vara="sakura";
    console.log("I am "+a);
}
 
varfunb=function(){
    varb="naruto";
    console.log("I am "+b);
}
 
varfunc=function(){
    varc="sasuke";
    console.log("I am "+c);
}
funa();
funb();
func();
这时我们用node 运行程序是没有问题的!但是如果我们钥匙把变量 a  ,在funb 函数里打印,程序就会报错.(代码如下)

1
2
3
4
5
varfunb=function(){
    varb="naruto";
    console.log("I am "+b);
    console.log(a);
}
如果这个例子我们理解了,那我们再来看一个更为复杂的例子。例子里先定义了 func1 函数,然后又在 func1 函数里定义了 func2 ,然后再func1里打印func2里的一个变量,这时是找不到变量的,程序会报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
vara=1;
varfunc1=function(){
    varb=2;
    varfunc2=function(){
        varc=3;
        console.log(b);//可以找到
        console.log(a);//可以找到
    }
    func2();
    //下面的c是找不到的。
    console.log(c);
}
func1();


简单的闭包函数

1
2
3
4
5
6
7
8
9
10
11
12
var  func=function(){
    vara=1;
    returnfunction(){
        a++;
        console.log(a);
    }
};
 
varf=func();
f();
f();
f();











评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值