数组与函数--js基础

一:数组

1.创建数组

  • 使用new创建数组
    var 数组名 = new Array();
    eg:var arr = new Array();//创建一个空数组
    var arr = new Array(2);//创建一个长度为2的空数组
    var arr = new Array(2,3) //等同于var arr = [2,3]
  • 使用数组字面量创建数组:[]
    var 数组名 = []; //创建一个空数组
    eg:var 数组名 = [1,2,'aef',true];

2.获取数组元素
使用数组下表,下标从0开始
格式:数组名[索引号]
eg:arr[0]
索取所有元素:使用for循环遍历

3.获取数组长度
使用length属性
格式:数组名.length

4.数组新增元素

  • 通过length属性实现数组扩容( length属性是可读写的)
  • 给对应索引号的元素赋值(新增或修改)eg:arr[3]=4
    注意:不能直接给数组名赋值,否则数组中所有元素将被覆盖
  • push方法 eg:arr.push(4,'pink') //向数组末尾添加元素,返回值为新数组长度
  • unshift方法 eg: arr.unshift(1,'cc') //向数组前面添加元素,返回值为新数组长度

5.删除数组中的元素

  1. 使用一个新数组存放筛选后的数据
  2. 遍历原始数组
  • pop方法 eg:arr.pop() //删除数组的最后一个元素,返回值即为删除的元素
  • shift() eg: arr.shift() //删除数组的第一个元素

6.数组排序

  • reverse():翻转数组 //arr.reverse()
  • sort() :给数组排序(冒泡排序) // arr.sort(),默认为升序
    优化:
    arr1.sort(function(a,b){
    return a-b; //升序的排序
    //return b-a;降序
    })

7.判断是否为数组
方法一:isinstanceof关键字
console.log(arr isinstanceof Array)
方法二:Array.isArray(参数) //h5新增,ie9以上支持

8.数组索引

  • indexOf():数组中查找给定元素的第一个索引,如存在返回索引号,如不存在返回-1
  • lastIndexOf():在数组中最后一个的索引,如存在返回索引号,如不存在返回-1
    9.数组去重
    核心算法:
    遍历旧数组
    判断元素是否在新数组存在,不存在则添加(利用indexOf()判断,如返回-1则证明在新数组中不存在)
    10.数组转字符串
  • toString() //arr.toString()
  • join(分隔符) //arr.join('-') ,如不传入参数默认为逗号

二:函数

  • List item

定义规则:
function 函数名(形参1,形参2){

}

  • List item
    函数调用:
    函数名(实参1,实参2)
    注意:如形参个数多余实参个数,会取到形参个数;如实参个数少于形参个数,未被赋值的形参是undefined。

  • 函数返回值return

return终止函数并且返回只能返回一个值(如用逗号隔开,则以最后一个值为准)
如函数没有return则返回undefined

  • arguments的使用

当不确定有多少个参数传递的时候,可用arguments来获取。arguments是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。它是一个伪数组:具有length属性,按照索引方式进行存储,但是没有真正数组的一些方法pop(),push()等

function fn(){
            console.log(arguments)
        }
        fn(1,2,3)

enter description here

  • 函数作用域:

函数内的作用域即为局部作用域;
全局作用域,在整个script标签中都生效
注意:函数内未声明直接定义的变量为全局变量
js中没有块级作用域

  • 作用域链:

内部函数可以访问外部函数变量的这种机制,即采用链式查找的方式,就近原则。

  • 预解析:

js代码是由浏览器中的js解释器(即js引擎)来执行的。js解释器在运行js代码时分为两步:预解析和代码执行。

预解析:js引擎会把js里所有的var和function提升到当前作用域的最前面

 - 变量提升:只提升声明部分,不提升赋值
 - 函数提升:把所有函数声明提升到作用域最前面(因此调用可在定义之前)

代码执行:按照代码书写顺序从上往下执行
特殊案例:
var a=b=c=9; //等同于var a=;b=9;c=9;
var a=9,b=9,c=9 //集体声明的正确方式

posted @ 2021-06-17 22:58  tingshu  阅读(48)  评论(0编辑  收藏  举报