函数
- 概念:
函数是代码的容器,可以装一段代码,可以封装一段代码,以后里面的代码可以多次调用而无需重复编写,可以消除页面上很多冗余重复的代码,俗称代码复用。 - 创建函数,函数的两种声明方式
(1) 函数的声明:
function fn(){//命名函数
console.log(arguments)
console.log(arguments[2])
}
fn(1,2,3,4,5)//d调用函数
(2)匿名函数(函数表达式):依然可以在代码中定义一个函数,只是当前函数没有直接命名,而通过一个变量来接受,因为javescript的变量可以包含任何内容,数组、字符串、对象、甚至是函数。被称为一个匿名函数,但是fun可以当做前函数的引用,可以理解为fuc的名字
var fun =function(){
console.log("我是函数表达式")
}
fun()
- 函数命名
驼峰式命名法 :小驼峰:多个单词组成函数名字的时候,第一个单词首字母小写,第二个单词首字母大写。大驼峰:每个单词的首字母都是大写。电脑编程时的一种统一命名规范,如果所有开发人员都按这种方式,程序的可读性就很高。 - 函数的参数
形式参数:在写函数时的变量列表,可以 有一个或多个变量,在调用函数时自动定义变量并将实际参数赋值给形式参数。函数体里的代码可以使用形式参数进行业务处理
实际参数:写在函数调用时的圆括号里,为具体的数据或者带有数据的变量,实际参数会将数据赋给形式参数。
内存回收机制:函数在没有调用的时候,函数内部的所有变量,包括形参都不会在内存分配空间,只有等调用函数的时候,会在内部分配每个变量对应的空间,当函数调用完毕,空间会被释放。空间没有被释放,内存溢出穿溢出。垃圾回收机制,当函数里面的变量运行完了,就会消失
形参的默认值:
同名参数:javascritp中允许参数同名,这在强类型语言中是不被允许的,在使用的时候就需要判断到底是用哪一种形参可以获取到值,默认是取后面的变量
arguments[]:用来存放参数的数组对象
参数的传递:调用函数的时候,实参需要根据函数定义的形参来进行传递,如果多了取够的,少了就undefined,也可用用lenght来获取形参的长度
如果参数是对象:
传递的是对象的地址,而不是对象本身,所以在函数里对对象属性的值做改动,那外面的对象也会改变,因为都是指向一个地址。
参数类型是一个对象的时候,其实传递的地址,变量默认放在栈里面,对象默认放在堆里面,栈里面变量要表达指定的对象存在就是内存地址。
传递参数的时候,传递的地址。如果你对地址所引用对象做了操作,不可逆。
javascript参数都是值传递,没有引用传递(对象传递 - 基本属性类型和对象的去区别
基本数据内型定义在栈空间里面,对象是放在堆空间里面,通过栈里面变量执行堆里面对象 - 返回值
return 函数返回值注意事项:return,后面的代码不会被执行,return只能返回一个值,如果返回多个值,那么返回的结果是最后一个值 - arguments的使用:
arguments:当我们不确定有多少个参数传递的时候,可以用arguments来获取, arguments实际是当前函数的一个内置对象,所有函数都内置了一个 arguments对象, arguments对象中存储了传递的所有实参
function fn(){
console.log(arguments)
console.log(arguments[2])
}
fn(1,2,3,4,5)
输出:
arguments展示形式是一个伪数组,因此可以进行遍历,伪数组有以下特点:
具有length属性
按索引方式存储数据,
不具有数据的push,pop等方法
可以按照数组的方式遍历arguments
10.