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 只跳出当前自己的函数
- 函数执行中执行其他函数,另一个函数中的内容执行完成后才会继续执行当前函数
- 当需要并列执行多个时,我们可以在一个函数中统一调配执行的顺序
回调
-
定义
将一个函数以参数的形式传入到另一个函数中,并且在那个函数执行
使用场景
-
回调一般用于当处理事情需要等待时,设置回调
setTimeout()、clearTimeout()
setTimeout(超时执行的函数,超时时间,执行函数的参数)
返回一个ID数clearTimeout(id) 清除这个超时函数,用于超时函数使用完后
setInterval()、clearInterval()
-
setInterval(间隔执行的函数,间隔时间)间隔函数,间隔一定时间重复执行函数
回调函数完成循环,局部传参返回值,注意逐层返回跳出函数
递归
-
定义
函数内部执行当前自身函数
根据内存大小设置递归上限的次数,如果递归次数太多,就会堆栈上限溢出
实例:递归实现深拷贝
数组
基本概念
-
有序列表存储若干个无序的元素,紧密型结构
-
将元素放在列表中的第几位,从0开始计算,这个位置就是下标,又叫做索引值
-
元素被存储在列表中,这个数据就是元素,简称元
-
从列表中获取这个元素的方法,使用 数组名[下标]就可以得到这个元素,这种方式叫做下标变量
-
var arr=[]; arr[3]=20;
arr[3] 下标变量 3就是下标 20就是元素 arr就是数组
数组与对象
-
数组
紧密型结构
当删除一个元素会将后面的元素向前递进
-
可以根据上一个内容找到与其相关联的其他数据
例如:可任意利用数组排序,找一个最小值,还可以迅速找到第二位最小值
只用下标存储对应的值
-
如果需要查找一个值,就需要遍历数组的每个元素以达到找到目标元素,时间复杂度极高
数组是有长度
数组中可以知道存储了多少元素
-
插入和删除都会影响数组的元素的位置和结构
对象
松散型结构
当删除一个元素时,对象的其他值不会发生变化对象是键值对存储
-
通过key去一一对应存储一个值,获取时只需要根据key去取值就可以,时间复杂度极低
对象是没有元素的个数,也就是没有对象长度
对象中不知道存储了多少个元素
-
插入和删除不会影响其他数据,时间复杂度极低
判断对象中,这个key对应的值,是否存在。在数组中,下标就相当于对象中的key,可以判断它的对象值是否存在
创建数组
-
字面量创建数组
var arr=[]; 创建空数组
构造函数创建法
-
new Array();
对象创建法
var arr=new Object([])
区分数组和对象
arr.constructor==Array arr的构造函数是Arrayconsole.log(String(arr)!=="[object Object]");
js是弱类型语言,数组比较随意,因此可以任意扩张,不需要限定它的长度,也无法限定长度
数组与其他类型
-
数组也是引用类型,引用地址赋值
-
数组在强转或者隐式转换为字符串时,都会转换为数组的元素连接字符串值
-
false
console.log([]===[]); - console.log([]==[]);
- console.log(![]);
- console.log([]==undefined);
- console.log([]==null);
true
-
console.log(![]==[]);
数组长度
-
数组中元素的个数
-
数组的长度是一个可读可写的属性
-
如果数组的长度修改比原来的长度小,就会把对应多出来的元素删除
-
数组的长度比数组的最大下标值大一
-
常见语句
arr.length-- 删除最尾部的一个元素 - arr.length==0 清空数组中所有元素
- arr.length ++ 在数组尾部添加一个空元素
- arr.[ arr.length]=5 在数组的尾部增加一个元素5
- arr[10]=100; 如果数组下标大于数组长度时,就会在对应的下标位增加元素,中间增加空元素
遍历数组
- 数组使用for循环遍历,会将所有下标遍历,不遍历数组的对象属性 但是会遍历到空元素,遍历时下标都是数值
- 数组使用for in循环遍历,会将所有的可枚举属性遍历,如果该属性 没有值就不遍历,例如数组中下标为空元素的,就不会被遍历,但是数组的对象属性会被遍历,遍历时都是将下标转换为字符串
XMind: ZEN - Trial Version
- 黑马程序员_JavaSE基础04 之 循环嵌套 函数重载 数组 内存空间划分
- JavaEE中级.20190525.JavaScript简介.JS基础语法(语句和注释.变量.数据类型.类型转换.数组.函数.JS对象).
- 由浅入深JavaScript5基础-数组和函数2
- JavaScript基础_04对象与函数
- JavaScript基础(基本语法:变量、语句、数组、函数、对象、全局方法以及js与java不同,js与html关联)
- javascript 学习三~函数和数组基础
- Java基础第一阶段——04_Java语言基础_for语句&函数&数组
- JavaScript基础知识02【函数与数组】
- 前端JavaScript基础知识点讲义代码九九乘法表、函数、排序、数组、循环、分支判断、对象、日期函数、装饰器、闭包、堆和栈、字符串
- javascript基础:函数传递参数的方式、参数数组、变量范围(变量作用域)
- Javascript(三)Javascript基础(函数与数组)
- JavaScript基础之函数与数组
- 04 Java基础语法(函数、数组)
- 【JavaScript 基础】04 函数
- 由浅入深JavaScript5基础-数组和函数1
- Acticle 5:javascript数组:数组基础及数组方法的各种使用
- javascript_basic_03之函数、循环、数组
- JavaScript分享基础-数组
- JavaScript基础学习之-JavaScript权威指南--8.1-8.4函数