• JavaScript模式读书笔记 第2章 基本技巧


    1,使用变量时使用var声明,防止出现隐式的全局变量。
     <script>
    function sum(x, y){
    result = x + y;//此处未声明result。反模式:暗示result为全局变量。
    return result;
    }
    window.onload = function (){
       result = 1;//声明全局变量
    sum(1, 2);
    console.log(result);//结果为3
    }
      </script>
      <script>
    function foo(){
    var a = b = 0;//b隐式声明为全局变量
    }
    window.onload = function (){
        b = 1;
    foo();
    console.log(b);//输出0
    }
      </script>
    2,变量释放时的副作用
        -1,使用var创建的全局变量(在函数外部创建)不能删除。
        -2,不使用var创建的隐含全局变量(在函数内部创建)可以删除。
    <script>
    var global_var1 = 1;
        global_var2 = 2;
    (function(){
    global_var3 = 3;
    }());
    //delete object
    console.log(delete global_var1);//false
    console.log(delete global_var2);//true
    console.log(delete global_var3);//true
    //test delete result
    console.log(typeof global_var1);//number
    console.log(typeof global_var2);//undefined
    console.log(typeof global_var3);//undefined
      </script>

    3,全局变量window:可以直接返回this,从而执行全局变量。
    4,单一var模式(Single var Pattern):
      1,  防止变量未声明便使用
       2,防止出现全局变量:
        
    var a = 1, b = 2, c = 3; 

    5,零散变量问题:
        Javascript允许函数任意位置声明变量,效果等同于在函数顶部声明。即所谓的“变量提升”。
        
    <script>
    myName = "global";
    function foo(){
    //var myName;
    alert(myName);//undefined,因为变量提升,此处的myName被看作局部变量。即等同于在此之前声明了如上注释的代码
    var myName = "local";
    alert(myName);//local
    }
    foo();
      </script>
    6,for循环问题:
    for循环便利数组的时候,尤其数组设计到DOM方法返回的对应数组,先使用临时对应存储可以很好的提高效率。
      <script>
    functions looper(){
    var i = 0, max, myArray = [];
    myArray = document.getElementsByName();
    for( i = 0, max = myArray.length; i < max; i++){
    }
    }
      </script>
    7,for-in循环:用来遍历非数组对象
        
      <script>
    var man = {hands: 2, legs:2, leads:1};
    if(typeof Object.prototype.clone == "undefined"){
    Object.prototype.clone = function(){};
    }
    for(var i in man){
    console.log(i , ":", man[i]);
    }
      </script>
    输出结果:
     hands : 2 test6.html:19
    legs : 2 test6.html:19
    leads : 1 test6.html:19
    clone : function (){} 

        


























    欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
    [CSDN博客:http://blog.csdn.net/mergades]。
    如相关博文涉及到版权问题,请联系本人。
  • 相关阅读:
    charles抓包实战
    linux环境安装jdk
    excel单元格数据变#号解决办法
    搭建接口自动化框架(附源码)
    dos批处理学习
    python远程操作linux服务器(获取ip,执行多条linux命令,上传文件)
    jmeter(五)创建web测试计划
    转载jmeter(四)配置元件
    JMeter(三)页面和主要测试组件
    jmeter(二)jmeter的目录解析
  • 原文地址:https://www.cnblogs.com/jingLongJun/p/4491081.html
Copyright © 2020-2023  润新知