week1.4函数上
函数
函数:一段有名字的代码块,完成特定功能的代码块,可以被重复调用。
//函数声明
function getMax(){console.log(1);}
?
//函数调用getMax()//调用一次getMax()//调用第二次
四个函数类型
自定义函数:由程序员根据业务需求自己定义的函数
1,有名函数
2,匿名函数自调用
3,匿名函数赋值表达式
4,有名函数赋值表达式
// 1,有名函数// 声明函数function fn1(){// 这里写入业务代码// 代码量无要求var result = 10>5?'yes':'no';console.log( result );}// 调用函数// 在函数名后面紧跟着的圆括号,就是调用函数的运算符fn1();console.log( fn1 );// 2,匿名函数
(function(){// 这里写入业务代码// 代码量无要求var result = 10<5?'yes':'no';console.log( result );
})();
?
?
// 3,匿名函数赋值表达式
var fn2 = function(){alert(1);
};
fn2();
?
// 4,有名函数赋值表达式
var f1 = function f2(){console.log(f2);alert(2);
};
f1();// 2
// f2();// error
?
函数四要素
function fn1(n){console.log( n );
}
fn1(2)
fn1(3)
1,函数名
函数名:上述案例fn1
2,函数体
函数体:上述案例{}内容
3,参数
参数:分形参和实参
形参:函数在定义时的参数,即n
实参:函数在调用时的参数,即2和3
形参和实参个数不同:
1,形参大于实参个数的时候,没有被赋值的形参 undefined
2,实参大于形参个数的时候,对程序没有任何影响
参数案例1
// 需求:计算两个数字的和var n1 = 10;var n2 = 20;var n3 = 30;var n4 = 40;// 在函数定义时写入圆括号内部的参数,形参// 形式参数,没有具体的值,相当于声明了一个变量// var a = 5;// var b = 10;function getSum(a,b){console.log(a+b);}// 在函数调用时传入圆括号内部的值,实参// 实际参数,有具体的值getSum(5,10); //15getSum(n1,n2); //30getSum(n1,'hello');// "10hello"getSum(n1,n3);// "10hello"
参数案例2
// var n1 = 10;// var n2 = 20;// var n3 = 30;// 40;function getSum(n1,n2,n3){console.log(n1,n2,n3);// 10,20,30}getSum(10,20,30,40);
4,return返回值
return返回值:return配合判断结构体一起使用。
function fn1(n){if(n>2){console.log( n );}return 'right'
}
//fn1(2) //right
fn1(3)// 3 right
返回值案例1
// 在函数中,我们可以使用return关键字来将函数中的一个值或者一个计算的结果返回function getSum( n1,n2 ){// console.log( n1+n2 );var r = n1+n2;// return关键字后跟的是什么,那么函数的返回值就是什么return r;} var result = getSum(10,20);console.log( result+5 );// 35// function getSum2(n1,n2){var sum = 0;for( var i=n1;i<=n2;i++ ){sum+=i;if( sum>100 ){return sum;}}}var result2 = getSum2(1,50);console.log(result2);
return细节
// 当函数中没有return关键字,其实函数依然有返回值function fn(){alert(1);// 当函数中没有ireturn 的时候,JS语言会为我们自动加上return// return undefined;}var result = fn();console.log( result );
?// 当函数中return后面没有跟任何数据的时候,函数依然有返回值function fn2(){alert(2);return;// return undefined;}var result = fn2();console.log( result );// 函数中如果没有return或者return后面没有数据,默认函数返回undefined
作业
// 需求1:写一个函数,计算出圆的面积// 参数1:圆的半径// 返回值:圆的面积console.log( Math.PI*3 );console.log( Math.round(3.6) );// 需求2:写一个函数,计算出圆的周长// 参数1:圆的半径// 返回值:圆的周长// 需求3:写一个函数,接受三个数字作为参数// 返回值:三个数字中的最大数// 思考题:写一个函数:createTriangle( rows,num,type ),在页面中创建三角形// rows:行数// num:第一行的列数// type:// "normal":正三角// "reverse":倒三角
答案
圆的面积----------------------------------------------------------------
console.log(Math.PI);//PI
console.log(Math.round(Math.PI));//四舍五入
function getArea(r){var s = 0;if(r>0){s = Math.PI * r * r;return s;}}
var r = +prompt("请输入半径:");var result = getArea(r );
console.log(Math.round(result));圆的周长--------------------------------------------------------------
function getChang(R){var zhouChang = 0;if(R>0){zhouChang = 2* Math.PI*R;return zhouChang;}}var r = +prompt("请输入半径:");var result = getChang(r);
console.log(Math.round(result));返回三个数中最大的数-----------------------------------------------------function getMax( ){if(n1>n2){if(n1>n3){return n1;}else {return n3;}}else{if (n2>n3) {return n2;}else{return n3;}}}var n1 = +prompt("请输入第一个数:");
var n2 = +prompt("请输入第二个数:");
var n3 = +prompt("请输入第三个数:");var result = getMax(n1,n2,n3);
console.log(result);
思考题:写一个函数:createTriangle( rows,num,type ),在页面中创建三角形------------------rows:行数num:第一行的列数type:"normal":正三角"reverse":倒三角function createTriangle( num,rows,type){switch(type){case "normal":for(var i = 1; i <= rows; i++){for(var j = 1; j <= num; j++){document.write("*");}num++;document.write("<br>");}break;case "reverse"://外层控制行for(var i = 1; i <= rows; i++){for(var j = num; j >= 1; j--){document.write("*");}num--;if(num ===0){continue;document.write("*");}document.write("<br>");}break;default: document.write("wrong");}}
var num = +prompt("请输入第一行有几个");
var rows = +prompt("请输入行数");
var type= prompt("请输入type:normal/reverse");
var result = createTriangle(num,rows,type);
console.log(result);