zoukankan      html  css  js  c++  java
  • 那些事

    创建数组

    在JavaScript多种方式创建数组

    构造函数

    1.无参构造函数,创建一空数组

    var a1 = new Array();
    

    2.一个数字参数构造函数,指定数组长度(由于数组长度可以动态调整,作用并不大),创建指定长度的数组

    var a2 = new Array(5);
    

    3.带有初始化数据的构造函数,创建数组并初始化参数数据

    var a3 = new Array(4,'hello',new Date());
    

    字面量

    1.使用方括号,创建空数组,等同于调用无参构造函数

    var a4=[];
    

    2.使用中括号,并传入初始化数据,等同于调用调用带有初始化数据的构造函数

    var a5=[10];
    

    注意点

    1.在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则创建一个数组,参数作为初始化数据加到数组中

    var a1=new Array(5);
    console.log(a1.length);//5
    console.log(a1); //[] ,数组是空的
    
    var a2=new Array(5,6);
    console.log(a2.length);//2
    console.log(a2); //[5,6]
    

    但是使用字面量方式,无论传入几个参数,都会把参数当作初始化内容

    var a1=[5];
    console.log(a1.length);//1
    console.log(a1); //[5]
    
    var a2=[5,6];
    console.log(a2.length);//2
    console.log(a2); //[5,6]
    

    2.使用带初始化参数的方式创建数组的时候,最好最后不要带多余的”,”,在不同的浏览器下对此处理方式不一样

    var a1=[1,2,3,];
    console.log(a1.length);
    console.log(a1);
    

    这段脚本在现代浏览器上运行结果和我们设想一样,长度是3,但是在低版本IE下确实长度为4的数组,最后一条数据是undefined!

    要理解闭包,首先理解两点:变量的作用域以及作用域链,这两个在前面都已经介绍过了,并且举了简单了列子,来回顾一下:

    var color = "blue";  
    function changeColor(){     
        var anotherColor = "red";  
        function swapColors(){         
            var tempColor = anotherColor;         
            anotherColor = color;         
            color = tempColor; 
            //在 swapColors函数里面可以访问tempColor,anotherColor和color          
        } 
        //在这里可以访问anotherColor和color,但不能访问tempColor 
        swapColors(); 
    }  
    

    上面的代码,我们之前用来说明作用域链,也就是变量从里往外找变量,这一简单的概念。但是,现在反过来,如果,我们需要在一个外部执行环境里面,访问内部执行环境的变量怎么办呢?

    function f1(){
        var n=999;
        function f2(){
            alert(n); // 999
        }
        //f2();
    }
    

    上面的代码很简单,我们在f1里面去调用f2()当然可以弹出n的值999,但是如果我们在外部全局执行环境里面还要获得n的值,这又该怎么办?这就是刚刚的提问,外部的执行环境要求访问内部执行环境的值。 从外往里访问,这里就可以通过闭包来实现这个效果,把上面的代码稍作修改:

    function f1(){
        var n=999; //私有变量
    
        //在函数f1内定义另外的函数作为f1的方法函数
        function f2(){
            alert(n); //引用外层函数f1的临时变量n
        }
        return f2; //返回内部函数
    }
    //调用函数
    var result=f1();
    result(); // 999
    

    当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包

  • 相关阅读:
    redis安装及教程
    Spring Cloud Alibaba系列教程
    EasyCode代码生成工具使用介绍
    FastDFS服务器搭建
    轻量级的java HTTP Server——NanoHttpd
    java代码的初始化过程研究
    浅谈设计模式的学习(下)
    浅谈设计模式的学习(中)
    浅谈设计模式的学习(上)
    PGET,一个简单、易用的并行获取数据框架
  • 原文地址:https://www.cnblogs.com/pulang/p/4101348.html
Copyright © 2011-2022 走看看