JavaScript(八)——JavaScript 函数

目录

1. 函数的概念

2. 函数的使用

2.1 声明函数

2.2 调用函数

3. 函数的参数

3.1 形参和实参

3.2 函数参数的传递过程

3.3 函数形参和实参个数不匹配问题

3.4 小结

4. 函数的返回值

4.1 return 语句

4.2 return 终止函数

4.3 return 的返回值

4.4 函数没有 return 返回 undefined

4.5 break ,continue ,return 的区别

4.6 通过榨汁机看透函数

5. arguments的使用

6. 函数案例

7. 函数的两种声明方式

1. 自定义函数方式(命名函数)

2. 函数表达式方式(匿名函数)


前言:对pink老师js教学进行笔记整理

1. 函数的概念

在 JS 里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。
虽然 for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用 JS 中的函数
函数: 就是封装了一段 可被重复调用执行的 代码块 。通过此代码块可以实现大量代码的重复使用。
<script>
        // 1. 求 1~100的累加和
        var sum = 0;
        for (var i = 1; i <= 100; i++) {
            sum += i;
        }
        console.log(sum);

        // 2. 求 10~50的累加和
        var sum = 0;
        for (var i = 10; i <= 50; i++) {
            sum += i;
        }
        console.log(sum);

        // 3. 函数就是封装了一段可以被重复执行调用的代码块 目的: 就是让大量代码重复使用
        function getSum(num1, num2) {
            var sum = 0;
            for (var i = num1; i <= num2; i++) {
                sum += i;
            }
            console.log(sum);
        }
        getSum(1, 100);
        getSum(10, 50);
        getSum(1, 1000);
    </script>

2. 函数的使用

函数在使用时分为两步: 声明函数 和调用函数。

2.1 声明函数

function 是声明函数的关键字, 必须小写
由于函数一般是为了实现某个功能才定义的, 所以通常我们将 函数名 命名为 动词 ,比如 getSum

2.2 调用函数

调用的时候千万 不要忘记添加小括号
口诀:函数不调用,自己不执行。
注意: 声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码。
 <script>
        // 函数使用分为两步: 声明函数 和 调用函数
        // 1. 声明函数
        // function 函数名() {
        //     // 函数体
        // }
        function sayHi() {
            console.log('hi~~');

        }
        // (1) function 声明函数的关键字 全部小写
        // (2) 函数是做某件事情,函数名一般是动词 sayHi 
        // (3) 函数不调用自己不执行
        // 2. 调用函数
        // 函数名();
        sayHi();
        // 调用函数的时候千万不要忘记加小括号
    </script>

2.3 函数的封装
函数的封装是把一个或者多个功能通过 函数的方式封装起来 ,对外只提供一个简单的函数接口
简单理解:封装类似于将电脑配件整合组装到机箱中 ( 类似快递打包)
案例:利用函数计算1-100之间的累加和

3. 函数的参数

3.1 形参和实参

声明函数时 ,可以在函数名称后面的小括号中添加一些参数,这些参数被称为 形参 ,而在 调用该函数时 , 同样也需要传递相应的参数,这些参数被称为 实参

参数的作用 : 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。

 

案例:利用函数求任意两个数的和

 

3.2 函数参数的传递过程

1. 调用的时候实参值是传递给形参的
2. 形参简单理解为: 不用声明的变量
3. 实参和形参的多个参数之间用逗号(,)分隔

3.3 函数形参和实参个数不匹配问题

 

3.4 小结

函数可以带参数也可以不带参数
声明函数的时候,函数名括号里面的是形参,形参的默认值为 undefined
调用函数的时候,函数名括号里面的是实参
多个参数中间用逗号分隔
形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配

 

4. 函数的返回值

4.1 return 语句

有的时候,我们会希望函数将值返回给调用者,此时通过使用 return 语句就可以实现。
return 语句的语法格式如下:

 

在使用 return 语句时,函数会停止执行,并返回指定的值
如果函数 没有 return ,返回的值是 undefined

案例 1:利用函数求任意两个数的最大值

 案例 2:利用函数求任意一个数组中的最大值

求数组 [5,2,99,101,67,77] 中的最大数值。

4.2 return 终止函数

return 语句之后的代码不被执行。

4.3 return 的返回值

return 只能返回一个值 。如果用逗号隔开多个值,以最后一个为准。

案例:创建一个函数,实现两个数之间的加减乘除运算,并将结果返回 

 

4.4 函数没有 return 返回 undefined

函数都是有返回值的
1. 如果有return 则返回 return 后面的值
2. 如果没有return 则返回 undefined

4.5 break ,continue ,return 的区别

break :结束当前的循环体(如 for、while)
continue :跳出本次循环,继续执行下次循环(如 for、while)
 return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

4.6 通过榨汁机看透函数

5. arguments的使用

当我们不确定有多少个参数传递的时候,可以用 arguments 来获取。在 JavaScript 中,arguments 实际上 它是当前函数的一个 内置对象 。所有函数都内置了一个 arguments 对象,arguments 对象中 存储了传递的 所有实参
arguments展示形式是一个伪数组 ,因此可以进行遍历。伪数组具有以下特点:
具有 length 属性
按索引方式储存数据
不具有数组的 push , pop 等方法
 <script>
        // arguments 的使用  只有函数才有 arguments对象  而且是每个函数都内置好了这个arguments
        function fn() {
            // console.log(arguments); // 里面存储了所有传递过来的实参  arguments = [1,2,3]
            // console.log(arguments.length);
            // console.log(arguments[2]);
            // 我们可以按照数组的方式遍历arguments
            for (var i = 0; i < arguments.length; i++) {
                console.log(arguments[i]);

            }
        }
        fn(1, 2, 3);
        fn(1, 2, 3, 4, 5);
        // 伪数组 并不是真正意义上的数组
        // 1. 具有数组的 length 属性
        // 2. 按照索引的方式进行存储的
        // 3. 它没有真正数组的一些方法 pop()  push() 等等
    </script>

 案例:利用函数求任意个数的最大值

 

6. 函数案例

案例 1: 利用函数封装方式,翻转任意一个数组

案例 2: 利用函数封装方式,对数组排序 -- 冒泡排序 

 

案例 3: 判断闰年
要求:输入一个年份,判断是否是闰年(闰年:能被4整除并且不能被100整数,或者能被400整除)
函数可以调用另外一个函数
因为每个函数都是独立的代码块,用于完成特殊任务,因此经常会用到函数相互调用的情况。
案例 4: 用户输入年份,输出当前年份2月份的天数
如果是闰年,则2月份是 29天, 如果是平年,则2月份是 28天
<script>
        // 用户输入年份,输出当前年份2月份的天数
        function backDay() {
            var year = prompt('请您输入年份:');
            if (isRunYear(year)) { // 调用函数需要加小括号
                alert('当前年份是闰年2月份有29天');
            } else {
                alert('当前年份是平年2月份有28天');
            }
        }
        backDay();


        // 判断是否为闰年的函数
        function isRunYear(year) {
            // 如果是闰年我们返回 true  否则 返回 false 
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;
            }
            return flag;
        }
    </script>

7. 函数的两种声明方式

1. 自定义函数方式(命名函数)

利用函数关键字 function 自定义函数方式。
因为有名字,所以也被称为 命名函数
调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面

2. 函数表达式方式(匿名函数)

利用函数表达式方式的写法如下:

因为函数没有名字,所以也被称为 匿名函数
这个fn 里面存储的是一个函数
函数表达式方式原理跟声明变量方式是一致的
函数调用的代码必须写到函数体后面
 <script>
        // 函数的2中声明方式
        // 1. 利用函数关键字自定义函数(命名函数)
        function fn() {

        }
        fn();
        // 2. 函数表达式(匿名函数) 
        // var 变量名 = function() {};
        var fun = function(aru) {
            console.log('我是函数表达式');
            console.log(aru);

        }
        fun('pink老师');
        // (1) fun是变量名 不是函数名  
        // (2) 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值 而 函数表达式里面存的是函数
        // (3) 函数表达式也可以进行传递参数
    </script>

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_60434562

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值