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); //15
getSum(n1,n2); //30
getSum(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);