一、函数的定义:
函数就是用来完成特定任务的代码块
二、函数的使用
1.函数使用分为两步: 声明函数 和调用函数
(1)声明函数
语法:function 函数名(){
函数
}
①function 声明函数的关键字 全部小写
②函数是做某件事情 函数名一般是动词 sayHi
③函数不调用自己不执行
(2)调用函数
语法: 函数名()
sayHi()
调用函数的时候千万不要忘记加小括号
2.函数的2种声明方式
(1)利用函数关键字定义函数(命名函数)
function fn(){
}
fn();
(2)函数表达式(匿名函数)
// var 变量名 =function(){};
var fun= function(aru){
console.log("我是函数表达式");
console.log(aru);
}
fun("老师");
// (1)fun 是变量名 不是函数
// (2)函数表达式声明方式和声明变量差不多,只不过变量里面存的是值 而函数表达式里面存的是函数
三、函数的参数
1.函数可以重复相同的代码
function cook(){
console.log("酸辣土豆丝");
}
cook();
cook();
2.函数的参数实现函数重复不同的代码
function 函数名(形参1,形参2...){在声明函数的小括号里面是 形参(形式上的参数)
}
函数名(实参1,实参2...); 在函数调用的小括号里面是实参(实际的参数)
// 形参和实参的执行过程
function cook(aru) { //形参是接收实参的 aru = "酸辣土豆丝" 形参类似一个变量
console.log(aru);
}
cook("酸辣土豆丝");
cook("大肘子");
案例:
// 利用函数求任意两个数的和
// 定义一个函数
function getSum(num1,num2){
var sum=num1+num2;
console.log(sum)
}
getSum(10,20);
// 利用函数求任意两个数之间的和
function getSums(s1,s2){
var sum=0;
for(i=s1;i<=s2;i++){
sum+=i;
}
console.log(sum);
}
getSums(10,20);
// 注意点
// (1)多个参数之间用逗号隔开
// (2)形参可以看做是不用声明的变量
3. 函数形参实参个数匹配
function getSum(num1,num2){
console.log(num1+num2);
}
// 1.如果实参的个数和形参的个数一致,则正常输出结果
getSum(1,2);
// 2.如果实参的个数多余形参的个数 会取到形参的个数
getSum(1,2,3);
// 3.如果实参的个数小于形参的个数 多余的形参定义为underfined 最终结果就是NaN
//形参可以看做是不声明的变量 num2 是一个变量但没有接收值,结果就是underfined
getSum(1);//NaN
四、函数的返回值
1.函数的返回值格式
function 函数名(){
return 需要返回的结果
}
函数名();
(1)我们函数只实现某种功能,最终结果需要返回给函数的调用者函数名() 通过return实现的
(2)只要函数遇到return 就把后面的结果 返回给函数的调用者 函数名()=return后面的结果
2 .代码验证
function getResult(){
return 666;
}
getResult();//getResulr() =666;
console.log(getResult())
3.函数返回值注意事项
(1)return 终止函数
function getSum(num1,num2){
return num1+num2;//return 后面的代码是不会被执行的
alert("我是不会被执行的");
}
console.log(getSum(1,2));
(2)return 只能返回一个值
function fn(num1,num2){
return num1,num2;//返回的结果是最后一个值num2
}
console.log(fn(1,2));//2
(3)我们函数如果有return 则返回值是return 后面的值,如果函数没有return 则返回undefined
function fun1(){
return 666;
}
console.log(fun1());//返回666
function fun2(){
}
console.log(fun2());//函数返回的结果是undefined
五、arguments 的使用
function fn(){
console.log(arguments);//里面存储了所有传递过来的实参
console.log(arguments.length);
console.log(arguments[2]);
// 我们可以按照数组方式遍历agruments
for(var i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
}
// fn(1,2,3);
fn(1,2,3,4,5);
arguments伪数组 并不是真正意义上的和数组
(1)只有数组的length属性
(2)按照索引方式进行储存的
(3)它没有真正数组的影响方法 pop() push() 等等
案例:
// 利用函数来求任意个数的最大值,不定参
function getMax(){
var max=arguments[0];
for(var i=0;i<arguments.length;i++){
if(arguments[i]>max){
max = arguments[i]
}
}
return max ;
}
console.log(getMax(1,2,3));
console.log(getMax(1,4,6,9));