js 函数的(function)简单介绍

222 阅读4分钟

js 函数 (function)

1.函数的简单作用

  • 函数:function,是被设计为 执行特定任务 的代码块

  • 说明: 函数可以把具有相同或相似逻辑的代码 “包裹” 起来,通过函数调用执行这些被 “包裹” 的代码逻辑,这么做的优势是有利于 精简代码方便复用。 ( 同样的功能,不用再敲一遍代码,直接用函数名放过即可 )

1648781367937.png

2.函数的使用

①. 函数的声明语法

<script>
    /*   function 函数名() {
            函数体
        } */
    
    
        function sayHi() {
           document.write(`hai 靓仔`)
        }
    </script>

②. 函数命名规范

  • 与变量命名基本一致

  • 尽量小驼峰式命名法

  • 前缀应该为动词

  • 命名建议:常用动词约定

  • 动词含义
    can判断是否可执行某个动作
    has判断是否含义某个值
    is判断是否为某个值
    get获取某个值
    set设置某个值
    load加载某些数据
<script>
        function getName() {}
        function addSquares() {}
    </script>

③. 函数的调用语法

<script>
     function getName() {}
        function addSquares() {}
    
    // 函数调用, 这些函数体内的代码逻辑会被执行
    //    函数名()
    //  注意点: 声明(定义)的函数必须 调用才会真正被执行,使用()调用函数
    
    //  函数一次声明可以多次调用,每一次函数体里面的代码会重新执行一次
    	getName() 
    	addSquares()
    
    //  我们曾经使用的  alert() , parselnt()  这种名字后面跟小括号的本质都是函数的调用
    </script>

④. 函数体

函数体时函数构成部分,它负责将相同或相似代码 “包裹” 起来,直到函数调用时函数体内的代码才会被执行。函数的功能代码都要写在函数体当中

1648783405317.png

3.函数传参

①. 函数的参数

我的理解是:用函数定好一个功能,先不定数据。再由调用者传入不同的数据 用这个函数的功能去处理 (要确定你这个数据是适用的)

1648783542212.png

②.有参数的函数声明和调用

  • 参数列表

    ​ 》 传入数据列表

    ​ 》 声明这个函数需要传入几个数据

    ​ 》 多个数据用逗号隔开

  • 声明语法:

<script>
    // 声明语法:
       /* function 函数名( 参数列表 ) {
            函数体
        } */
    
		// 单个参数
        function getSquares(num1) {
            document.write(num1 * num1)
        }
    
    //   多个参数
     function getSum (num1, num2) {
            document.write(num1 * num2)
        }
    </script>

③. 形参和实参

  • 形参:声明函数时写在函数名右边小括号里的叫形参 (形式上的参数)
  • 实参: 调用函数时写在函数名右边小括号里的叫实参 (实际上的参数)
  • 形参可以理解为是 在这个函数内声明的 变量 (比如 num1 = 10)实参可以理解为是给这个变量赋值
  • 开发中尽量保持形参和实参个数一致
  • 我们曾经使用过的 alert(' 打印 '),parselnt(' 11 '), Number( '11' )本质上都是函数调用的传参

1648785502181.png

4. 函数返回值

①.返回值介绍

概念:把 **执行特定任务 **的代码块,所处理好的结果 返还给我们

  • 缺点:把计算后的结果处理方式写死了,内部处理了

  • 解决:把处理方式返回给调用者

  • 有返回值函数的概念:

    ​ 》当调用某个函数,这个函数返回一个结果出来

    ​ 》这就是有 返回值 的函数

1648793495640.png

1648793564705.png

②.用return返回数据

1648793708930.png

③.细节:

  • 在函数体中使用 return 关键字能将内部的执行结果交给函数外部使用
  • 函数内部只能运行到 1 次 return ,并且 return 后面代码不会再被执行, 所以 return 后面的数据不要换行写
  • return 会立即结束当前函数
  • 函数可以没有 return ,这种情况函数默认返回值为 undefined
<script>


       //  用函数找出两个数组的最大值
        function getMax(arr) {
            let max = arr[0]
            for (let i = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i]
                }     
            }
            return max; //  返回值
        }
    
        let arr1 = ([1, 3, 4, 2, 22]);
        let arr2 = ([3, 2, 63, 23, 4]);
		// 调用者  选择的输出结果
        document.write(`${getMax(arr1)} `)
        
        console.log(getMax(arr2));


    
    
    
    
    
	//  这是用同样的方法找出  最小值
        function getMin(arr) {
            let min = arr[0]

            for (let i = 0; i < arr.length; i++) {
                if (min > arr[i]) {
                    min = arr[i]
                }           
            }
            return min; //  返回值
        }
    
        let arr3 = ([1, 3, 4, 2, 22]);
        let arr4 = ([3, 2, 63, 23, 4]);

    	// 调用者  选择的输出结果
        document.write(`${getMin(arr1)} `)
        
        console.log(getMin(arr2));
    </script>

5.作用域

①.作用域概述

  • 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的 可用性的代码范围 就是这个名字的 作用域

  • 作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突

  • 局部作用域 和 块级作用域 差不多的 区别不是很大

1648794846930.png

②.变量的作用域

  • 变量作用域的特殊情况:

    ​ 》如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当 全局变量 看,但是强烈不推荐

    ​ 》函数内部的形参可以看做是局部变量,所以形参相当于函数内部定义的局部变量,只有在函数内部可以使用。

④. 变量访问原则-作用域链

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的局部作用域
  • 如果函数中还有函数,那么在这个作用域终究又可以诞生一个作用域
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域

6.匿名函数

匿名函数目前先了解即可

1.1648795498846.png

2.1648795580412.png

3.1648795602073.png

4.1648795631423.png