js中全局变量与局部变量实例、闭包

本文通过一个具体的HTML+JavaScript示例,深入浅出地讲解了全局变量与局部变量的概念及使用区别,帮助读者理解不同作用域下变量的变化规律。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

局部变量与全局变量实例,需要自己复制,再在浏览器实验,体验总结。说多可能记不住,自己实际操作了记忆深刻。

下面给出实验例子:

<!doctype html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>测试页面</title>
  <script type="text/javascript" src="jquery.js"></script>
 </head>
 <body>
<input type="button" value="click me" onclick="q();d();q();" />
 

<script>
//var t="tt";
$(document).ready(function(){
	q();
console.log("3:"+t);
////var t="t0";
//console.log("1:"+t);
d();
console.log("2:"+t);
q();
console.log("3:"+t);
})

$().ready(function(){
	

})

$(function(){
	
})
function a(){
	t="a";
	console.log("a()的t:"+t);
}
function s(){
	t="s";
	console.log("s()的t:"+t);
}
function d(){
	t="d";
	a();
console.log("d()的t:"+t);
}
function q(){
	var t="q";
	s();
	console.log("q()的t:"+t);
}

</script>
 </body>
</html>

结果:

(1)当注释掉全局变量定义的var t="tt";

(后半部分是由点击“click me”按钮显示的)

(2)当取消注释var t="tt";进行全局变量定义时:

(后半部分是由点击“click me”按钮显示的)

(3)在(2)的基础上再打开$(document).ready(function(){}中的var a="t0";注释:


分析总结:

1.全局变量定义定义在script标签内,所有方法外,一般习惯定义在<script>内第一行,所有方法共享这一变量,都可以改变这一变量。如上例中的var t="tt";

2.局部变量定义在方法实体内,如q()中的var t="q"; ,只对q()方法内有效,形成闭包,连外调的s()方法都不能改变其值,并且全局变量定义var t="tt";也不能改变其值,此时的s()改变的是全局变量的值而不是q()的局部变量值,q()改变的是内部的局部变量的值,不改变全局变量的值。

3.当var t定义在$(document).ready(function(){}中,即加载页面就定义了,和局部变量一样,外调的方法只改变全局里的值,不改变局部变量值;(3)的结果和在(3)的基础上再注掉全局变量定义的var t="tt";的结果一样。

4.所以对比得出,全局变量即全局变量定义在script标签内其他所有方法外,建议定义在script标签的下一行(开头)

5.局部变量定义在方法体类,外调方法不会影响其值,形成闭包。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值