JavaScript函数(方法)基础知识

一、什么是函数?

        函数是一个可以重复使用的程序模块,该程序模块可以完成一个特定的功能。

二、函数的定义:

           function 函数名 (【参数】){

               函数体语句

      }

(1)function:关键字,必须小写。

(2)函数名:用户标识符(用户自定义)--- 建议:见名知意。

(3)【参数】:'()'不能省略,【参数】是可选的(函数可有参数,也可没有)。

(4)'{ }':不能省略,表示函数的控制范围。

(5):'函数体语句':实现功能的代码。

 //1~100的累加
 function getSum(){
             let sum = 0;
             for(let i = 0; i <= 100; i++){
                 sum += i;
             }
             return sum;
         }

三、函数的调用:

1、带返回值的函数(函数中有return语句的函数):

        let 变量 = 函数名 (【参数】)

 //1~100的累加
 function getSum(){
             let sum = 0;
             for(let i = 0; i <= 100; i++){
                 sum += i;
             }
             return sum;
         }
         let a = getSum();//getSum函数中return返回值赋值给a
         console.log('1+2...+100=',a);

练习:定义函数计算1! + 2! +...5!的和。

  function getSum(){
             let sum = 0;
             
             for(let i = 1; i <= 5; i++){
                 let count = 1;
                 for(let j = 1; j <= i; j++){
                     count *= j;
                 }
                 sum += count;
             }
             return sum;
         }
         console.log('结果:',getSum());

练习:定义一个函数,返回所有水仙花数。

 function getSum(){
             let a = [];
         for(let i = 100; i < 1000; i++){
                 let gewei = i % 10;
                 let shiwei = parseInt(i / 10 % 10);
                 let baiwei = parseInt(i / 100);
             if(i === gewei ** 3 + shiwei ** 3 + baiwei ** 3){
                a.push(i);
             }
         }
             return a;
         }
         console.log(getSum());

注意:关于函数的返回值

      a、函数是否要返回值由具体需求决定

      b、函数返回值通过return语句来完成,函数一旦执行return语句,则当前函数结束运行

2、无返回值的函数调用:

函数名(【参数】)

四、函数的参数

      函数在运行时需要外部的数据才能实现具体的功能。这个外部的数据就是参数。

1、形参:

      形式参数,在函数定义时出现在函数首部的参数。没有实际值,只是一个占位符。

function getNum(n){//n为形参
             let sum = 1
             for(let i = 1; i <= n; i++){
                 sum *= i;
             }
             return sum;
         }

2、实参:

        实在参数。是在函数调用时出现在函数首部的参数。实参表示一个实际值。

练习:

//定义一个函数,计算n!
 ​
 function getNum(n){//n为形参
             let sum = 1
             for(let i = 1; i <= n; i++){
                 sum *= i;
             }
             return sum;
         }
 ​
         let k = prompt('输入一个数')//k为实参
         let m = getNum(k);
         console.log(m);
 //定义一个函数,用于输出一个二维数组
 ​
         function showArray(arr){//arr为形参
             let str = '';
             for(let i = 0; i < arr.length; i++){
                 for(let j = 0; j < arr[i].length; j++){
                     str += arr[i][j] + '\t';
                 }
                 str += '\n';
             } 
             console.log(str);
         }
       
         let a1 = [[1,2,3],[4,5,6],[7,8,9]]//a1为实参
         showArray(a1);
 ​
         let a2 = new Array(new Array(11,22,33,44),new Array(55,66,77,88));
         showArray(a2);
//定义一个函数,用来判断一个数是否是素数,是返回true,不是返回false
 ​
         function isPrime(n){//n为形参
             for(let i = 2; i < n; i++){
                 if(n % i == 0){
                     return false;
                 }
             }
             return true;
         }
 ​
         let k = prompt('输入一个数')
         console.log(isPrime(k));
 ​
         //输出100以内所有素数
 ​
         let str = ''
         for(let i = 2; i <= 100; i++){
             if(isPrime(i) == true){//i是实参
                 str += i + '\t'
             }
         }
         console.log(str);

3、在函数调用时,参数传递方向是单向的,即实参---->形参(当形参发生改变时不会影响实参)

 //参数传递方向是单向的:实参---->形参
 ​
         function swap(x,y){
             console.log('形参:x='+x,'y=' +y);
             let temp = x;
             x = y;
             y = temp;
             console.log('形参:x='+x,'y=' +y);
         }
 ​
         let a = 5 , b = 6;
         swap(a,b)
         console.log('实参:a ='+a ,'b='+b);
 ​

五、函数参数的数量

         在JavaScript中允许函数的形参与实参数量不同 。

1、实参个数 > 形参个数:

        函数可以正常运行,多余实参被忽略。

 function f1(m,n){ //m、n是形参
             return m+n
         }
 ​
 let t = f1(11,22,33,55) //实参是4个,多余的实参被忽略
 console.log(t)

2、实参个数 < 形参个数:

      多出的形参是一个已申明但未赋值的变量,值为undefined。

function f2(a,b,c){ //形参是3个,c的值是undefined
             console.log('a='+a+',b='+b+',c='+c)
 }
 ​
 f2(123,456) //实参是2个

六、arguments对象的使用

1、是内置对象:

       已经定义好的,用户可直接使用。

2、作用:

       调用函数时,函数的实参都保存在arguments对象中。

//定义一个函数,返回调用该函数时实参中的最大值
 ​
         function getMax(){
             let max = arguments[0];
             for(let i = 0; i < arguments.length; i++){
                 if(max < arguments[i]){
                     max = arguments[i];
                 }
             }
             return max;
         }
 ​
         let a = getMax(12,23,333,256);
         console.log(a);//返回结果:333

注意 :每个函数内部都有一个arguments对象,本质是一个数组,数组保存的是调用函数传递的实参。

练习

 /* 定义一个函数,判断一个数是否是"完数"
         完数:某个数的所有因子(不包含自身)之和等于它本身 */
 ​
         function getNum(n){
             let sum = 0;
             for(let i = 1; i < n; i++){
                 if(n % i == 0){
                     sum += i;
                 }
             }
             if(sum == n){
                     return true
                 }else{
                     return false
                 }
            
         }
 ​
         //输出1000以内的所有'完数'
         for(let j = 1; j < 1000; j++){
             if(getNum(j)){
                 console.log(j);
             }
         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值