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>

 

 

 

 

 

 

 

 

 

### 回答1: JavaScript 函数是一组语句的集合,它可以被命名并可以被执行多次。函数可以接受参数并返回结果。函数可以在脚本中的任何地方定义,但通常在脚本的开头定义,然后在脚本的其他地方调用。 语法: ``` function functionName(parameters) { // code to be executed } ``` 示例: ``` function sayHello(name) { console.log("Hello, " + name); } sayHello("John"); // Output: "Hello, John" ``` JavaScript 中还有一种类型为 "箭头函数"(Arrow function),其语法与传统函数略有不同。 示例: ``` let sayHello = (name) => { console.log("Hello, " + name); } sayHello("John"); // Output: "Hello, John" ``` ### 回答2: JavaScript函数,可以看做是一种带有特定功能的代码片段。它可以接受参数,以及返回值。函数JavaScript的重要组成部分之一,它被用于简化代码,实现模块化,以及使代码更易于维护和调试。 函数的定义:使用关键字“function”和函数名来定义函数函数名是可选的。参数的定义在圆括号内,多个参数使用逗号隔开。函数语句以花括号“{}”来包含。一个函数可以有多个语句。返回值通过“return”语句来实现。 函数的调用:可以通过函数名加上参数列表的形式来调用函数。注意要使用函数名后的小括号“()”,以及实际参数列表。 函数的参数:JavaScript每个函数都可以有零个或多个参数。每个参数由参数名和类型组成。参数的类型是不需要显式声明的。在函数内部可以使用参数名来访问参数的值。如果函数需要返回多个值,可以使用对象或数组。 函数的返回值:函数的返回值可以是任意类型的值。返回值可以直接指定值,或者通过表达式计算得出。如果在函数中没有使用“return”语句,则函数默认返回“undefined”。如果没有显式的返回值,则函数执行到最后一行代码后结束。 函数作为一个值:JavaScript中的函数可以作为一个值被传递给其他函数函数作为值的特别之处在于,函数可以被存储为变量或对象的属性,或者被其他函数返回。这使得函数可以方便的用于实现回调函数和模块化编程。 闭包:JavaScript函数的一个特别之处是,函数内部可以定义其他函数。定义在函数内部的函数可以访问外部函数的所有变量和参数,这就是闭包。闭包使得函数可以“记住”调用它时的上下文环境,这使得函数可以在不同的场合下具有不同的行为。 函数的实际应用非常广泛,无论是前端还是后端开发都离不开它。因此,学会灵活、熟练的掌握JavaScript函数,对于从事Web开发的初学者或者有一定开发基础的程序员来说都非常重要。 ### 回答3: JavaScript 函数是一种可重复使用的代码块,由定义、参数列表和函数体组成,可以对于函数内部逻辑的实现进行封装,从而实现代码的可维护性、可读性和可扩展性。函数JavaScript 的核心机制之一,系统中有很多内置函数和用户自定义函数函数的定义: 函数可以通过函数关键字 function 来定义,格式为: ``` function 函数名(参数1, 参数2...) { // 函数体 } ``` 其中,参数可以是任意类型,也可以不定义参数。函数体中可以包括任意合法的 JavaScript 代码,包括变量声明、表达式、语句等。函数名可以是任意合法的标识符,命名规则与变量命名规则相同。 函数的调用: 函数调用时,需要在函数名后面加上一对圆括号,括号中可以包含函数参数的值或表达式。例如: ``` function foo(a, b) { return a + b; } foo(2, 3); // 5 ``` 函数的参数传递: JavaScript 函数中的参数传递可以通过值传递和引用传递两种方式。 值传递是指函数调用时,实参的值会被复制到函数的形参中,在函数内部对形参的修改不会影响到实参的值。例如: ``` function swap(x, y) { let temp = x; x = y; y = temp; } let a = 1, b = 2; swap(a, b); console.log(a, b); // 1, 2 ``` 引用传递是指函数调用时,实参是一个对象或数组,函数内部对形参的修改会影响到实参的值。例如: ``` function change(obj) { obj.name = 'Tom'; obj.age = 18; } let person = { name: 'Jerry', age: 20 }; change(person); console.log(person); // {name: 'Tom', age: 18} ``` 函数的返回值: 函数可以通过 return 语句返回一个值,如果没有 return 语句,将返回 undefined。例如: ``` function sum(a, b) { return a + b; } let s = sum(1, 2); console.log(s); // 3 ``` 函数还可以返回一个函数,形成函数嵌套,实现程序逻辑的分离和复用。例如: ``` function makeAdder(a) { return function(b) { return a + b; }; } let add5 = makeAdder(5); console.log(add5(2)); // 7 console.log(add5(3)); // 8 ``` JavaScript 函数的特点包括可重复使用、可维护性高、参数传递灵活等,可以帮助我们实现复杂的程序设计。在学习和使用 JavaScript 函数的过程中,需要注意函数的命名规范、参数传递的方式、返回值类型的确定等问题,同时也需要注意函数的作用域、闭包、高阶函数等更深入的话题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

m0_60434562

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

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

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

打赏作者

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

抵扣说明:

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

余额充值