函数定义
函数:就是封装了一段 可被重复调用执行的代码块儿
函数的封装:把一个或多个功能通过函数的方式封装起来 ,对外只提供一个简单的函数接口
**为什么需要函数?**可以实现代码复用,提高开发效率
声明/调用函数
函数两种声明方式:
无参数:
//方式一:
function 函数名(){
函数体
}
//方式二:
var 变量名 = function () {} ;//匿名函数
//调用函数
函数名();
有参数
//声明函数:
function 函数名(参数){
函数体
}
//调用函数:
函数名(参数);
函数可以调用另外一个函数
具名函数/匿名函数
//具名函数
function foo(){
//函数执行语句
}
foo(); //调用
//匿名函数
let bar = function (){
//函数执行语句
}
//这种函数又称为函数表达式,本质上同普通函数没有区别
//函数也是【数据】
//把函数赋值给变量
//匿名函数就是不写名字的函数
普通函数的声明与调用无顺序限制,推荐做法先声明再调用
函数表达式必须要先声明再调用
立即执行函数IFEE
//方式一
(function (){ console.log("123")} )();//括号在外
//方式二
(function (){ console.log("123")}());//括号在内
注意:
作用:防止变量污染(知道就行,以后遇到使用场景自然就明白了)
注意: 多个立即执行函数要用 ; 隔开,要不然会报错
函数的命名规范
- 和变量命名基本一致
- 推荐驼峰命名法
- 推荐使用英文动词
形参和实参的匹配问题:
//函数形参实参个数匹配
function getSum(num1 ,num2){
console.log(num1+num2);
}
1、如果实参个数和形参个数一致 则正常输出结果 getSum(1,2);
2、如果实参个数多于形参个数 会取到形参的个数 getSum(1,2,3);
3、如果实参的个数小于形参的个数
-
多余的形参定义为undefined 最终结果就是NaN
-
形参可以看作是不用声明的变量
-
num2是一个变量但是没有接受值 结果就是undefined
-
getSum(1);
函数的返回 return:
函数的返回值格式
function 函数名 (){
return 需要返回的结果;
}
函数名();
1、我们函数只是实现某种功能,最终的结果需要返回给函数的调用这函数名() 通过return实现的
2、只要函数遇到return 就把后面的结果返回给函数的调用者 函数名()=return后面的结果
3、代码验证
function getResult(){
return 666;
}
getResult(); //getResult () = 666 console.log(getResult());
相当于赋值给函数调用
实际开发经常用变量接收函数的返回值
//在我们实际开发里面,我们经常用一个变量来接受 函数的返回结果
var re = getArrMax([5,2,99,101,67,77]);
console.log(re);
return后面的代码永远不会执行,有返回值返回正常,没有return返回undefined
return特点
1、可以都直接consloe.log打印出来
2、可以alert弹框出来
3、可以声明变量 var s = add() 保存在变量中
4、函数执行完return后停止并且立即退出,后面的脚本不再执行
1.我们为什么需要函数有返回值
- 我们有时候需要的是这个函数执行完后的结果
2.函数有返回值用那个关键字? 有什么注意事项呢?
-
return后面不接数据或者函数内不写return,函数的返回值是undefined
-
return能立即结束当前函数
break 、continue、 return区别
-
break:结束当前的循环体(如 for、while)
-
continue:跳出本次循环,继续执行下次循环(如 for、while)
-
return:不仅可以推出循环,还能返回return语句中的值,同时还可以结束当前函数体内的代码,只能返回一个值,如果用逗号分隔,则取最后一个
arguments
-
函数的内部所有的参数都会形成一个数组,arguments就是用来访问这个数组的
-
不确定有多少个参数传递的时候 使用arguments获取
-
arguments的展示形式是一个伪数组,因此可以进行遍历
严格模式:
-
在严格模式下,传递的参数不能被arguments修改,而非严格模式下可以
-
arguments[0]//中括号内的索引从0开始的正整数
arguments伪数组特性
arguments对象,
1、只是与数组类似,并不是array的实例
2、按索引方式存储数据,[]语法访问它的每一个元素
3、具有length属性,可以使用length属性确定传递参数的个数
4、不具有push(),pop()等方法
求任意一组数的平均值
//求任意一组数的平均值
function getAvg(){
var sum = 0 ;
for(var i = 0 ; arguments.length ; i++){
sum +=arguments[i];
}
return sum / arguments.length;
}
getAvg();