• 变量不加 var 声明——掉进坑中,无法自拔!


    整整一下午,都在解决 window.onresize 中方法丢失不执行的问题!姿势固定在电脑前,颈椎病都犯了。

    前些日子与大家分享了一下关于 防止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且是全部变量,前两个被覆盖了。

    此次坠坑纯粹是自己不小心,害得自己浪费宝贵的绳命时间,换来颈肩腰腿痛,在此留帖,以警后时!

  • 相关阅读:
    CVE-2020-14882&14883weblogic未授权命令执行漏洞复现
    不学点《近世代数》怎么学好现代密码学
    Android 7.0应用之间共享文件
    在.NET Core 中收集数据的几种方式
    浅析 TensorFlow Runtime 技术
    Linux — 进程管理
    【爬虫】爬取淮安信息职业学校(苏电院)的新闻网 python
    【爬虫】获取Github仓库提交纪录历史的脚本 python
    React入门学习笔记
    test
  • 原文地址:https://www.cnblogs.com/dereksunok/p/3895671.html
Copyright © 2020-2023  润新知