您的位置:首页 > Web前端 > JavaScript

JavaScript基础04—函数、数组

2020-08-08 16:42 507 查看

JavaScript

函数

参数

  • arguments.length 实参长度,也就是实际传入的参数长度
  • fn.length 形参长度,函数定义参数数量
  • if(arguments.callee.length<arguments.length) 形参长度小于实参长度

清除函数

  • fn=null;

  • delete window.fn;无效

    delete 不能删除任何window下的函数方法

return

  • 函数返回

    函数在执行时,将返回函数中return 内容
  • 如果return后没有内容或者没有return,返回一个undefined
  • 作用

      返回局部变量

    • 返回参数

      改变非引用值时不会引起外部的改变,需要用return
    • 改变引用值(对象)会引起外面的改变,return作用不大
  • 跳出,切断,不继续执行

  • 函数的运行过程

    • 代码上到下,遇到函数执行完函数继续向下
    • return 只跳出当前自己的函数
    • 函数执行中执行其他函数,另一个函数中的内容执行完成后才会继续执行当前函数
    • 当需要并列执行多个时,我们可以在一个函数中统一调配执行的顺序

    回调

    • 定义

      将一个函数以参数的形式传入到另一个函数中,并且在那个函数执行
  • 使用场景

      回调一般用于当处理事情需要等待时,设置回调
    • 当不需要关心具体后续需要处理的事情时,设置回调
  • setTimeout()、clearTimeout()

      setTimeout(超时执行的函数,超时时间,执行函数的参数)

      返回一个ID数
    • 异步、一定时间段后处理
  • clearTimeout(id) 清除这个超时函数,用于超时函数使用完后

  • setInterval()、clearInterval()

      setInterval(间隔执行的函数,间隔时间)间隔函数,间隔一定时间重复执行函数
    • clearInterval 清除间隔函数
  • 回调函数完成循环,局部传参返回值,注意逐层返回跳出函数

  • 递归

    • 定义

      函数内部执行当前自身函数
  • 根据内存大小设置递归上限的次数,如果递归次数太多,就会堆栈上限溢出

  • 实例:递归实现深拷贝

  • 数组

    基本概念

    • 有序列表存储若干个无序的元素,紧密型结构

    • 将元素放在列表中的第几位,从0开始计算,这个位置就是下标,又叫做索引值

    • 元素被存储在列表中,这个数据就是元素,简称元

    • 从列表中获取这个元素的方法,使用 数组名[下标]就可以得到这个元素,这种方式叫做下标变量

    • var arr=[]; arr[3]=20;

      arr[3] 下标变量 3就是下标 20就是元素 arr就是数组

    数组与对象

    • 数组

      紧密型结构

      当删除一个元素会将后面的元素向前递进

    • 可以根据上一个内容找到与其相关联的其他数据

      例如:可任意利用数组排序,找一个最小值,还可以迅速找到第二位最小值
  • 只用下标存储对应的值

      如果需要查找一个值,就需要遍历数组的每个元素以达到找到目标元素,时间复杂度极高
  • 数组是有长度

  • 数组中可以知道存储了多少元素

      插入和删除都会影响数组的元素的位置和结构
    • 插入和删除都会影响数组的运行效率时间复杂度较高
  • 对象

      松散型结构

      当删除一个元素时,对象的其他值不会发生变化
    • 每个数据都是独立存在,不存在关联关系,更不能排序,,所以不找因关联关系找到对应的值
  • 对象是键值对存储

      通过key去一一对应存储一个值,获取时只需要根据key去取值就可以,时间复杂度极低
  • 对象是没有元素的个数,也就是没有对象长度

  • 对象中不知道存储了多少个元素

      插入和删除不会影响其他数据,时间复杂度极低
  • 判断对象中,这个key对应的值,是否存在。在数组中,下标就相当于对象中的key,可以判断它的对象值是否存在

  • 创建数组

    • 字面量创建数组

      var arr=[]; 创建空数组
  • 构造函数创建法

      new Array();
    • new Array(size);
    • 如果构造函数创建数组时,仅有一个参数且参数是一个大于0 的正整数,那么这个数就是这个新数组的长度,并且没有元素,如果是负数或者小数,就会报错,如果是非数值类型,就会将这个元素放在数组的第0位
  • 对象创建法

      var arr=new Object([])

    • 区分数组和对象

      arr.constructor==Array arr的构造函数是Array
    • Array.isArray(arr) 是不是数组(仅限ES6以后支持)
    • 数组转字符串后判断是不是不等于[object object]
      console.log(String(arr)!=="[object Object]");
  • js是弱类型语言,数组比较随意,因此可以任意扩张,不需要限定它的长度,也无法限定长度

  • 数组与其他类型

    • 数组也是引用类型,引用地址赋值

    • 数组在强转或者隐式转换为字符串时,都会转换为数组的元素连接字符串值

    • false

      console.log([]===[]);
    • console.log([]==[]);
    • console.log(![]);
    • console.log([]==undefined);
    • console.log([]==null);
  • true

      console.log(![]==[]);
    • console.log([]=="");
    • console.log([]==false);
    • console.log([]==0);

    数组长度

    • 数组中元素的个数

    • 数组的长度是一个可读可写的属性

    • 如果数组的长度修改比原来的长度小,就会把对应多出来的元素删除

    • 数组的长度比数组的最大下标值大一

    • 常见语句

      arr.length-- 删除最尾部的一个元素
    • arr.length==0 清空数组中所有元素
    • arr.length ++ 在数组尾部添加一个空元素
    • arr.[ arr.length]=5 在数组的尾部增加一个元素5
    • arr[10]=100; 如果数组下标大于数组长度时,就会在对应的下标位增加元素,中间增加空元素

    遍历数组

    • 数组使用for循环遍历,会将所有下标遍历,不遍历数组的对象属性 但是会遍历到空元素,遍历时下标都是数值
    • 数组使用for in循环遍历,会将所有的可枚举属性遍历,如果该属性 没有值就不遍历,例如数组中下标为空元素的,就不会被遍历,但是数组的对象属性会被遍历,遍历时都是将下标转换为字符串

    XMind: ZEN - Trial Version

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: