博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS var命令容易产生的精彩bug
阅读量:5247 次
发布时间:2019-06-14

本文共 817 字,大约阅读时间需要 2 分钟。

【本文出处: 】

在编写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:2index.html:448 fun_j:6index.html:453 page_i:4index.html:454 page_j:6index.html:455 page_k:1index.html:456 Uncaught ReferenceError: l is not defined
从中可以看出:

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

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

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

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

转载于:https://www.cnblogs.com/leytton/p/8253283.html

你可能感兴趣的文章
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
React Router 4.0 基本使用
查看>>