JS基础3_函数

4. 函数和对象

 4.1 函数 :系统函数和自定义函数

  自定义函数:

         function 是一个功能体,可以接受若干个参数,返回特定的值

  系统函数:parseInt()/parseFloat()....

4.1  创建函数方法

1)创建普通函数

function 函数名称(){

  函数体——封装的反复执行的代码

}

 

调用:函数名称()

扫描二维码关注公众号,回复: 5922622 查看本文章

练习:创建函数,封装10+20的计算结果并打印出来,调用3次。

练习:创建函数,封装计算1~100之间所有整数的和并打印结果,调用3次

 

function add(){

         console.log(10+20);

}

add();add();add();

function add2(){

         for(var i=1,sum=0;i<=100;i++){

                   sum+=i;

         }

         console.log(sum);

}

add2();add2();add2();

 
 

2)创建带有参数的函数

function 函数名称(参数列表){

     //形参 -> 用于接收数据

  函数体

}

 参数列表:参数可以有多个,用形参

 

调用: 函数名称(参数列表) //实参 ->实际要传递的数据

 

参数列表:可以是0个或者多个,之间用逗号隔开;创建时的参数称为形参,调用时的参数称为实参,实参会赋值给形参;形参可以看成一个变量,值是未赋值,未赋值默认是undefined;如果实参的个数小于形参的个数,则未赋值的形参为undefined。

练习:创建函数getSum,传递1个参数,计算1~任意数字之间所有整数的和,调用3次。

练习:创建函数getRun,传递2个参数,计算任意两个年份之间的闰年个数,调用3次。

function getSum(n){

         for(var i=0,sum=0;i<=n;i++){

                   sum+=i

         }

         console.log(sum);

}

getSum(15);

getSum(30);

getSum(5);

function getRun(a,b){

         for(var i=a,count=0;i<=b;i++){

                   if(i%4==0 && i%100!=0 || i%400==0){

                            count++;

                   }

         }

         console.log(count);

}    //参数1赋给a,参数2赋给b

getRun(2000,2020);getRun(1900,1990);

getRun(2000,2050);

3)创建有返回值的函数

function 函数名称(参数列表){

  函数体

  return 返回值; //函数的返回结果

}

 调用:函数名称(参数列表)

return::表示函数执行后返回的结果,可以保存下来

 函数调用后会得到return的值

注意事项:

1. 如果没有return或者return后没有返回值,结果都是 undefined

   2. return出现以后,return后面的所有代码不会执行

练习:创建函数getMax,传递2个参数,返回两个数字中的最大值。

//计算任意三个数字的和,并把结果返回

//练习:创建函数getMax,传递3个参数,返回三个数字中的最大值

练习:创建函数getStatus,传递1个参数,根据状态码返回对应的中文 1-等待付款 2-等待发货 3-运输中 4-已签收 5-已取消

function getMax2(a,b){

         if(a>b){

                   return a;

         }else{

                   return b;

         }

}

var result= getMax2(5,2);

console.log(result);

function add3(a,b,c){

         return a+b+c;

}

//函数结果保存到变量中

var result=add3(4,5,6);

console.log(result);

function getMax3(a,b,c){

         var max=a>b ? a : b;

         return max>c ? max : c;

}

var max=getMax3(3,2,7);

console.log(max);

function getStatus(s){

         switch(s){

         case 1: return '1-等待付款';

         case 2: return '2-等待发货';

         case 3: return '3-运输中';

         case 4: return '4-已签收';

         case 5: return '5-已取消';

         default: return '状态码有误';

         }

}

console.log(getStatus(4));

//计算1~任意数字之间的所有整数阶乘的和

//1.创建函数getJc,传递一个参数计算任意数字的阶乘

function getJc(n){

         for(var i=1,ride=1;i<=n;i++){

                   ride*=i;

         }

         return ride;

}

//2.计算1~任何数字之间整数的和

function getSum(n){

         for(var i=1,sum=0;i<=n;i++){

//i代表中间所有的整数//获取数字的阶乘getJc(i)

                   //sum+=i;把所有数字加到sum

                   sum+=getJc(i);//把所有数字的阶乘加到sum

         }

         return sum;

}

var res=getSum(5);

console.log(res);

4.2 变量作用域

 (1) 作用域:变量或者函数可以访问的范围

  函数作用域:在函数中使用var声明的变量,只能在函数内部访问,不能在外部访问到。

  全局作用域:在全局作用域下声明的变量,可以在任意合法位置访问到。

注意:在函数内部使用var声明的变量是局部变量,不使用var声明的变量是全局变量

(2)变量的声明提升:

       JS程序执行前,会将使用var关键字声明的变量提升到所在作用域的最前边(全局和函数),赋值还是在原来的位置

 

4.3 函数作用域

  函数作用域:函数的课访问范围也分为全局作用域和函数作用域。

(1)函数声明的提升:

                   和声明变量提升一样,JS程序执行前,会将function创建的函数提升到所在作用域的最前边,调用可以在任意合法的位置

 

4.4  递归调用

  递归:在函数内部调用自身

  递归要有结束条件,结合return来使用。

练习:使用递归来计算1~任意数字之间的和

练习:使用递归来计算任意数字的阶乘。

function getSum(n){

         //当n为1的时候。返回1

         if(n==1){

                   return 1;

         }

         return n+getSum(n-1);

}

 var res=getSum(4);

console.log(res);

 

1. 匿名函数

          匿名函数:没有名称的函数   function () { ...}

(1)创建函数

         函数声明方式:

function (){....}

         函数表达式方式:

var 函数名称=function(形参列表){

 函数体

}

 调用 函数名称();

var fun=function(){

       console.log(1);

}

fun();

         对比fun和fun()的区别:

     fun():是函数的调用;返回函数的调用结果

     fun :是函数的名称,对应的是函数的整体结构

函数声明和函数表达式常见函数的区别:

  函数声明存在函数提升,调用可以在任意合法位置

  函数表达式不存在函数提升,只能先创建,再调用。

 

//练习:使用函数表达式创建函数,计算任意两个数字之间所有整数的和,并返回结果

var getSum=function(a,b){

  for(var i=a,sum=0;i<=b;i++){

    sum+=i;

}

   return sum

}

console.log(getSum(1,2));

 

 

 

 

 

 

(2)匿名函数自调用

         创建一个独立的函数作用域,防止污染全局。

    全局污染:变量(函数)出现后会影响其它的使用

(function(形参列表){

  函数体; //函数体中的变量和创建的函数只能在内部使用                                                                                            

})(实参列表);

(function(a){

       var num=1;

       console.log(a);

})(2);  // 输出 2

(3)回调函数

回调函数:将匿名函数以实参形式传递,这个匿名函数就称为“回调函数”;此时的形参就是函数名称,如果要调用匿名函数,只需要  形参名称()

function fn(a){

  //a 就是传递的匿名函数的名称

  a();   // 执行传递的匿名函数函数体中的代码

}

fn(function(){........})

function fn(a){       

     //调用函数的时候,实参赋给形参

         //a=fn(function(){ return 1;});

//此时的a就是函数名称,如果要执行传递的匿名函数中函数体的代码,需要调用函数

         var num=a();

         console.log(num);

}

fn(function(){

         return 3;

});

//创建函数,传递两个参数,实参都是以匿名函数的形式传递,在匿名函数中分别返回数字,计算两个数字相加得到和并打印出来

function getSum(a,b){

         var sum1=a();

         var sum2=b();

          console.log(sum1+sum2);

}

getSum(function(){

                   return 2;

         },function(){

         return 1;

         });

 

2. 全局函数

          

parseInt()

将数据转为整型

parseFloat()

将数据转为浮点型

encodeURI()

对一个URL中的中文进行编码

decodeURI()

对已经编码的URL进行解码

isNaN()

判断一个值是否为NaN   ——> 是-> true/不是->false

isFinite()

判断一个值是否为有限值 ——>  是->true/不是->fale    Infinity 无限值

eval()

执行字符串中的表达式   ——>  eval('1+1') ——>2

猜你喜欢

转载自blog.csdn.net/Andrexc/article/details/89345075
今日推荐