js隐式全局变量造成的bug示例代码
作者:
一段js代码遇到一个bug,由于中间的隐式全局变量造成的,通过谷歌浏览器的js调试器才找到问题所在,下面将代码与大家分享下
一段js代码遇到一个bug,由于中间的隐式全局变量造成的,
由于代码较多,通过谷歌浏览器的js调试器才找到问题所在,
话说本人的电脑无论如何都装不上fiefox,从去年开始尝试了多次,均以失败告终,
不过谷歌的调试也挺好用的。
简化代码如下:
$(function(){
var pageNo = 2;//这个参数是变化的
var pageSize = 10;
test();
paginate(pageNo,pageSize);//由于 test() 方法覆盖pageNo,导致pageNo始终等于1
});
function test(){
pageNo = 1;//全局变量,覆盖之前的pageNo ,相当于在js顶部写 var pageNo = 1
//这里改为 var pageNo = 1;就可以了
//do,,,
}
function paginate(pageNo,pageSize){
window.location.href = "user_list.action?pageNo="+pageNo+"&pageSize="+pageSize;
}
在js中建议所有的变量均用var 声明,并且所有的变量都可以写到顶部,因为js没有块级作用域。
由于代码较多,通过谷歌浏览器的js调试器才找到问题所在,
话说本人的电脑无论如何都装不上fiefox,从去年开始尝试了多次,均以失败告终,
不过谷歌的调试也挺好用的。
简化代码如下:
复制代码 代码如下:
$(function(){
var pageNo = 2;//这个参数是变化的
var pageSize = 10;
test();
paginate(pageNo,pageSize);//由于 test() 方法覆盖pageNo,导致pageNo始终等于1
});
function test(){
pageNo = 1;//全局变量,覆盖之前的pageNo ,相当于在js顶部写 var pageNo = 1
//这里改为 var pageNo = 1;就可以了
//do,,,
}
function paginate(pageNo,pageSize){
window.location.href = "user_list.action?pageNo="+pageNo+"&pageSize="+pageSize;
}
在js中建议所有的变量均用var 声明,并且所有的变量都可以写到顶部,因为js没有块级作用域。
您可能感兴趣的文章:
- 基于JavaScript 声明全局变量的三种方式详解
- javascript中局部变量和全局变量的区别详解
- Javascript全局变量var与不var的区别深入解析
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- javascript全局变量封装模块实现代码
- JavaScript中全局变量、函数内变量以及常量表达式的效率测试
- 理运用命名空间让js不产生冲突避免全局变量的泛滥
- 浅谈JavaScript的全局变量与局部变量
- JS全局变量和局部变量最新解析
- Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
- 探讨JavaScript中声明全局变量三种方式的异同
- JavaScript防止全局变量污染的方法总结