- 函数:是由事件驱动或者被调用时,可以重复使用的代码
事件驱动:点击事件 鼠标移入事件 鼠标移出事件
被调用:sum();-->函数执行 - 函数的语法(基本语法)
定义:
关键字 函数名(){函数(函数体/函数代码)}
function fnName(){......}
执行:
函数名();
fnName(); - 函数的特点:
- 函数定义独立存在时没有意义,只有被调用的时候,才会实现函数的功能
- 定义一个函数,可以多次被调用执行,并且每次调用执行都是独立的
- 函数内的变量,在函数外是获取不到的
函数是引用数据类型 函数名中存的值是一个地址
- 闭包:函数在执行的时候,形成私有作用域,里面的变量就成为私有变量,外界获取不到,函数的这种保护机制,叫做闭包
- 函数的参数:可以让函数内获取函数外的值
形参:用来接收外界传递给函数的值
形参在函数定义部分 函数名后面的括号内
实参:用来定义要传递的值
实参在函数执行是 函数名后面的括号内
基本语法:
function 函数名(形参1,形参2...){}
函数名(实参1,实参2...)
- 函数可以不定义参数(形参和实参都不存在)
- 函数如果定义形参而没有传递实参,那么形参获取到的是undefined
- 函数如果只定义实参,而没有定义形参的时候,函数用arguments来接收实参
- 函数默认接收参数的对象--arguments
函数接收参数的方式有两种,第一种是人为定义形参,第二种是arguments
arguments(参数集合)是一个对象
获取到的值会以类数组的形式储存[1,2,3,4,5]
类数组和数组一样,都有索引和长度,类数组中的每一个都是类数组的属性值,类数组的属性名为索引 - 外界如何获取到函数的返回值(是一个值,而不是返回变量)
return 值;
- return 后面可以有返回值,也可以没有返回值
- 函数内出现return 函数内return后的代码就不会执行了
返回值会出现undefined有两种情况?
- 没有写return
- 写了return但没有赋值
是否要返回值?
“获取”需要返回值,“设置”不需要返回值;
重点:
- return 返回的是值,不是任何的变量
- 函数名() 是函数的执行结果
- 函数名相当于一个变量,是用来代表函数和储存函数的,函数名代表这个函数本身
- return后不返回值的时候,函数执行结果接收到的是undefined
// 任意数求和
function sum() {
var total=null;
for(var i=0;i<arguments.length;i++){
var cur=Number(arguments[i]);
if(!isNaN(cur)){
total+=cur;
}
}
return total;
}
var total=sum("1",2,4,"12bc");
console.log(total);