JavaScript基础04—函数、数组

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值