JS var命令容易产生的精彩bug

【本文出处: http://blog.csdn.net/leytton/article/details/54024167

在编写simJQ框架时发现我可能一直在犯的错误,var命令心情好的时候就加在变量前面,心情不好赶时间就直接省略了●﹏●

如果HTML调用的框架函数中有全局变量,那么很容易造成混乱。

注意:函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

有两点:

1、最好进行var命令声明

2、全局变量就不用在老长的js代码的最前面声明啦,随用随地声明~


此外,看下面这段代码的运行

function var_test(i){
		i=1;
		i++;
		j++;
		k=1;
		var l=2;
		console.log('fun_i:'+i);
		console.log('fun_j:'+j);
	}
	i=4;
	j=5;
	var_test(i);
	console.log('page_i:'+i);
	console.log('page_j:'+j);
	console.log('page_k:'+k);
	console.log('page_l:'+l);


运行结果:

fun_i:2
index.html:448 fun_j:6
index.html:453 page_i:4
index.html:454 page_j:6
index.html:455 page_k:1
index.html:456 Uncaught ReferenceError: l is not defined


从中可以看出:

1、函数中参数有与全局变量名字相同的名字(或全局变量当作虚参)时,对此变量的操作不影响全局变量

2、在函数中不带var命令声明的全局变量,在HTML页面中仍旧有效

3、函数中对HTML页面全局变量的操作,在HTML页面中仍旧有效

4、在函数中带var命令声明的为局部变量,在HTML页面中无效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值