变量不加 var 声明——掉进坑中,无法自拔!
2014-08-06 20:16
218 查看
整整一下午,都在解决 window.onresize 中方法丢失不执行的问题!姿势固定在电脑前,颈椎病都犯了。
前些日子与大家分享了一下关于 防止jquery $(window).resize()多次执行其中方法的文章,没写全,留了一大堆问题,我理解的方法是这样的:
我们定义了一个变量 resizable 来存储 onresize 中需要执行的方法,起到了延迟执行并在一定时间内执行一次的作用。
此处,若 var resizable = null; 变成 resizable = null; 想必问题不大,暂且认为只有一个方法和一个对象被调用,内存中也只有一个 resizable且是全部变量。
接着有了这样的需求:多个 foo(obj) 方法在运行
此处若是 esizable = null; 没有加上 var 声明,resizable = setTimeout(function(){ //onresize 执行 ss(obj); },200);中的方法就仅仅是 foo(obj003) 了。因为内存中也有一个 resizable[b]且是全部变量,前两个被覆盖了。[/b]
此次坠坑纯粹是自己不小心,害得自己浪费宝贵的绳命时间,换来颈肩腰腿痛,在此留帖,以警后时!
前些日子与大家分享了一下关于 防止jquery $(window).resize()多次执行其中方法的文章,没写全,留了一大堆问题,我理解的方法是这样的:
function foo() { var resizable = null; window.onresize = function() { if (resizable) { clearTimeout(resizable) } resizable = setTimeout(function(){ //onresize 执行 ss(); },200) } } function ss(){ //.... }
我们定义了一个变量 resizable 来存储 onresize 中需要执行的方法,起到了延迟执行并在一定时间内执行一次的作用。
此处,若 var resizable = null; 变成 resizable = null; 想必问题不大,暂且认为只有一个方法和一个对象被调用,内存中也只有一个 resizable且是全部变量。
接着有了这样的需求:多个 foo(obj) 方法在运行
/* * 多个 foo(obj) 方法在运行 */ window.onload = function(){ foo(obj001); foo(obj002); foo(obj003); } function foo(obj) { //第一次执行 ss(obj); var resizable = null; window.onresize = function() { if (resizable) { clearTimeout(resizable) } resizable = setTimeout(function(){ //onresize 执行 ss(obj); },200) } } function ss(obj){ //.... }
此处若是 esizable = null; 没有加上 var 声明,resizable = setTimeout(function(){ //onresize 执行 ss(obj); },200);中的方法就仅仅是 foo(obj003) 了。因为内存中也有一个 resizable[b]且是全部变量,前两个被覆盖了。[/b]
此次坠坑纯粹是自己不小心,害得自己浪费宝贵的绳命时间,换来颈肩腰腿痛,在此留帖,以警后时!
相关文章推荐
- var 中的变量 必须声明:
- var this.value 可在任意地方 声明 类成员变量。如果可以利用在C++ 那该有多好啊
- 声明变量,一定要用 var!
- js 变量声明 (var使用与不使用的区别)
- JavaScript中变量声明有var和没var的区别示例介绍
- JavaScript中声明变量有无var
- es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量
- 使用var声明的变量 和 直接赋值并未声明的变量的区别
- 函数中声明变量不用Var的情况
- javascript函数内部用var声明临时变量需要注意的
- angularJS2 变量声明 var let const
- for循环绑定事件时,var和let声明循环变量的区别
- JavaScript声明变量时为什么要加var关键字
- Swift_声明变量var、常量let
- 【Js】声明变量中var和作用域关系
- Node.js 中 变量声明 带var 和不带var 的情况
- js 变量声明 (var使用与不使用的区别)
- 浅谈JavaScript中定义变量时有无var声明的区别
- Java Script 第二节课 Java Script的变量 var声明变量