zoukankan      html  css  js  c++  java
  • 自执行函数简单应用

    1、需求

    创建一个函数,接受一个数字(0-9),返回该数字相应的英文名称

    2、方法一

    // global scope...
    var names = ['zero','one','two','three','four','five','six','seven','eight','nine'];
    var digit_name1 = function(n){
        return names[n];
    };
    

      缺点是把数组被定义在全局作用域中,变量命名容易冲突而且很容易被其他代码修改造成结果不准确

    3、方法二

    var digit_name2 = function(n){
        var names = ['zero','one','two','three','four','five','six','seven','eight','nine'];
        return names[n];
    };
    

      虽然避免了全局变量的问题,但是每次调用都会重新生成数组并且分配空间,若数组很大,造成性能问题

    4、方法三

    // "An inner function enjoys that context even after the parent functions have returned."
    var digit_name3 = (function(){
        var names = ['zero','one','two','three','four','five','six','seven','eight','nine'];
        return function(n){
            return names[n];
        };
    })();
    

      数组变量定义在自执行方法中,有效避免全局变量问题,而且伴随着匿名function的自动执行,变量只初始化一次,利用闭包特性,内部返回function保存有对names的引用,缺点是闭包用多后会导致内存得不到及时释放造成问题

  • 相关阅读:
    图灵2010.05书讯
    上海.NET技术交流会
    图灵2010.07书讯
    高效模式编写者的7个习惯
    QRCode 二维码开源DLL
    javascript 复习
    关于反射技术
    数字签名与加密解密
    使用负载均衡技术建设高负载的网络站点
    dreamweaver cs5.5中的phonegap升级测试
  • 原文地址:https://www.cnblogs.com/teamobaby/p/4000618.html
Copyright © 2011-2022 走看看