• 闭包JS


    如 
    var a = function() {
       var i = 1;
       var b = function() {
          i = i+1;
       };
    };
     
    闭包的使用场景例如递归
    应该return b出去把
     
    re 不re, 看业务需求
     
    或者需要保存内部变量的就是闭包的使用场景了
     
    外部不一定要用
    保存内部变量实现缓存
     
    保存内部变量的就是闭包的使用场景
    function picLinkInit(parentClassName, imgW, imgH, childClassObjs) {
    var $match = $(parentClassName);
    var mWidth = Math.floor($match.width());
    
    var mHeight = computeHeight(mWidth, imgW, imgH);
    $match.css({
        "width": mWidth,
        "height": mHeight
    });
    for (var i = 0; i < childClassObjs.length; i++) {
        var childClassObj = childClassObjs[i];
            $(childClassObj.cName).css({
                "width": Math.floor(mWidth * childClassObj.ratioMoleculeW / childClassObj.ratioDenominatorW),
                // "background": "rgba(9,200,200,0.5)",
                "height": Math.floor(mHeight * childClassObj.ratioMoleculeH / childClassObj.ratioDenominatorH)
            });
        /* if (childClassObj.url) {
                $(childClassObj.cName).click(function () {
                    window.location.href =childClassObj.url;
                });
            }*/
       (function (i) {   //闭包
                if ( childClassObjs[i].url) {
                    $( childClassObjs[i].cName).click(function () {
                        window.location.href = childClassObjs[i].url;
                    });
                }
            })(i);
        }
    }
    闭包表现:js没有块级元素,数组记录的是最后一个的 。跟作用域等有关。
    封装成内部函数,把i传人进内部函数,这样外部函数不会调用到内部函数的变量。
    (function (i) {
        if ( childClassObjs[i].url) {
                  $( childClassObjs[i].cName).click(function () {
                      window.location.href = childClassObjs[i].url;
                  });
              }
         })(i);
  • 相关阅读:
    jQuery(八):属性操作
    jQuery(七):节点操作
    jQuery(六):value值操作
    jQuery(五):文本操作
    jQuery(四):HTML代码操作
    jQuery(三):样式操作
    jQuery(二):jQuery选择器
    JavaScript(九):JavaScript中的内置对象
    JavaScript(五):变量的作用域
    如何让命名变得优雅
  • 原文地址:https://www.cnblogs.com/zyjzz/p/6561919.html
Copyright © 2020-2023  润新知