• 函数


    函数

    基本知识:

    函数:

        概念就是完成完成某一功能的代码段。从代码结构上看就是使用{}将一段功能性的代码括起来,并使用function关键为这段代码起一个名子,就是封装。在名子后加'()',此函数的作用指示此名子,只能调用。

        函数是模块化编程思想的产生。在函数的基础上再进行封装就是面向对象的编程思想。

    函数的作用:

        减少代码冗余,达到一次定义多次调用。

    示例:

    函数的组成元素

    函数名、形参、实参

    函数的定义:

    function funName(形参列表){

        //函数体

        【return 值】;

    }

    说明:

        funName就是一个函数名(标识符),命令规则,只能包含字母、数字、下划线,不能以数字开头。

        命名方式,小驼峰,如果函数名,由多个单词组成,除第一个单外,以后的每个单字母大写,三个单词以上使用缩写。

    函数的调用:

    funName(实参列表);

    函数的参数

    与函数相关的参数有形参、实参

    形参:

        函数定义时的参数就称之为形参

    作用:

        用于向函数内部传递数据。

        形参可以让函数更改具有通用性。

    特点:

        形参就是一个变量,只在函数内部有效,对函数外部不可见

    实参:

        函数调用时的参数称之为实参,实参可以变量,可以是字面值。
    作用:

        用于从函数外部向函数内部传递数据

    形参与实参的区别:

        实参是主动向函数内部数据,形参是被接收数据

    示例:

    形参的默认值

    php中函数的形参可以赋值,赋的值就是形参的默认值

    当函数调用时没有为形参传递数据,那么函数内部使用形参的默认值

    当函数调用时有没形参传递数据,那么函数内部使用实参的数据。

    形参可让函数更加具有通用性。

    具有默认值的形参的使用,一般习惯上将具有默认值的形参放在形参列表最后。

    php中实参的个数,不能少于不具有默认值的形参的个数。

    实参的个数比形参的个数多,那么多个实参会被忽略。

    形参与实参内存分析

    源代码:

    <?php

        showInfo('hello phper');

        function showInfo($mes){

            echo $mes;

        }    

        $v1 = 'php15';

        showInfo($v1);

    ?>

       

    执行过程:

    1、编译,加载源代码,词法检查,语法检查(可执行机器代码)

    2、执行函数的调用,检查看内存中有没函数存在,存在。

    2.1、开启执行函数,查看是否形参,有没有?没有默认,找实参(字面值)

    2.2、在栈区再开辟一个专属于当前函数的内存空间

    2.3、在函数专属的空间内,开启一个空间用于$mes变量名

    2.4、执行ehco $mes,在函数专属空间内使用$mes变量存储的内存地址到,数据段的全局区找到相应当,并输出到缓存区。

    2.5、第一次调用结束时,位于栈区的专用于第一次调用时开辟的内存空间的数据,会全部清空。

    3、执行$v1 = 'php15';

    3.1、直接在栈区开辟一个空间用于存储$v1

    3.2、在数据段的全局区开辟一个空间用于存储'php15';

    3.3、将存储php15物理地址,传给$v1

    4、执行函数第2次调用showInfo($v1)

    4.1、检查函数是否有形参,有形参且,调用时也传递了实参$v1

    4.2、在栈区再开辟一个专属于当前函数的内存空间

    4.3、在函数专属的空间内,开启一个空间用于存储$mes变量

    4.4、实参与形参传递默认是值的传递,相当于$mess = $v1,将$v1存储的地址指向的数据,存储,$mess存储的地址指向的空间。

    4.5、将全局区为$mess变量开辟的存储数据的空间的地址传递给栈区中的$mess变量

    4.6、执行ehco $mes,在函数专属空间内使用$mes变量存储的内存地址到,数据段的全局区找到相应当,并输出到缓存区。

    4.7、第一次调用结束时,位于栈区的专用于第一次调用时开辟的内存空间的数据,会全部清空。

    5、脚本执行结束栈区,与代码段清空,数据段中没有被指向的数据全部被操作系统 回收。

    图解:

    函数的返回值

        函数用于完成一功能,在完成功能的同时在函数内部会产生数据,数据可能会在函数执行结束后,被其后的代码所使用。由于函数在执行结束后,所有的数据都被清空(函数内部无法保存数据),需要将函数产生的数据返回给函数的调用处

    语法:

        return 值;

    说明:

        return并不是必须的,是根据需求而定。

        一个函数内可以有多个return,当函数在执行时,遇到任何一个return都会直接结束函数体。

       

    示例1:

    示例2:

    函数体:

    完成某一功能的代码段。

     

    匿名函数

        匿名函数,就是没有名子函数(JS)

    可变函数

    一个变量的值是另一个函数的名,那么就可以在变量名后使用'()'来调用,与变量值同名的函数。

  • 相关阅读:
    熔断降级(Polly)
    网站被黑
    Redis 缓存穿透
    搭建私有Nuget仓库
    什么是配置
    css3的@media媒体查询
    css设置background图片的位置实现居中
    UTF-8有签名和无签名的区别
    SQL Server表结构和数据导入到MySQL
    Jquery实现滚动到底部加载更多(最原始)
  • 原文地址:https://www.cnblogs.com/nyxd/p/5356057.html
Copyright © 2020-2023  润新知