山山未迟

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

image

 

回顾

运算符:算术,比较,逻辑,赋值,三目,错误抑制,位运算(三码),自操作,字符串

执行结构:顺序,分支(if和switch),循环(for,while,do-while,foreach)

函数:自定义函数(函数名,参数(形参,实参),函数体,返回值)

自定义函数

返回值

返回值指的当函数调用结束以后,该函数给外部调用处返回一些列的数据(数据类型任意:八个数据类型)

如果函数没有任何返回值,可以理解为函数返回的是NULL。

PHP中函数可以没有返回值。

clip_image002

参数传值

传值方式:值传递(默认的)和引用传递

值传递:将实参复制一份,传递给形参(形参与外部实参变量没有关系),值传递可以通过在调用函数的时候直接使用数据常量。

引用传递:形参是获得实参所指向的数据的内存地址,形参与实参共同指向同一个内存地址。

引用传递

引用传递语法:在定义函数的时候,给形参使用地址符号&,调用引用传递的函数的时候,必须使用变量(实参必须是变量:不能是数据常量)传递。

clip_image004

引用传递不能使用数据常量

clip_image006

内存分析

clip_image008

特别注意:引用传值只能使用变量传数据。

参数作用

将函数外部的数据传入到函数内部供其使用

作用域

作用域概念

1. 什么是作用域?

作用域指的就是变量所能使用的范围。

作用域分为两类:全局作用域和局部作用域。

2. 全局作用域和局部作用域定义?

全局作用域

只要在函数外部定义的变量都是全局作用域

局部作用域

在函数内部定义的变量称之为局部作用域

3. 全局作用域和局部作用域功能?

局部作用域的变量只能在函数的内部使用,函数外部不能使用。

全局作用域:

JS中:全局作用域的变量可以在函数的内外都使用

PHP中:全局作用域只能在函数外部使用

作用域证明

clip_image010

跨域使用变量

想要在函数的内部使用全局变量,在函数的外部使用局部变量。

局部使用全局作用域

方案一:

让函数在定义的时候采用引用传值。

方案二:

使用系统预定义超全局变量$GLOBALS,该变量保存了所有的全局变量。

clip_image012

全局使用局部作用域

方案一

让函数在定义的时候采用引用传值。

方案二

返回值:将内部数据(局部变量)作为返回值。

方案三

使用global关键字:将局部变量全局化(在创建局部变量的同时,创建全局变量:当前全局变量不存在,如果存在就会产生引用)

引用全局变量

clip_image014

创建全局变量

clip_image016

内存分析1:引用全局变量

clip_image018

内存分析2:创建全局变量

clip_image020

参数默认值

在定义函数的时候,给形参指定默认值,在进行函数调用的时候,可以不给有默认值的参数传递实参。

语法:形参 = 默认值

注意:如果一个参数列表中存在有默认值的参数,那么该参数必须在最右边(后面)

clip_image022

静态变量

1. 什么是静态变量?

在函数内部使用static关键字修饰的变量,函数在多次调用的时候能够共同使用该变量(跨函数共享变量)

语法:static $变量
clip_image024

内存分析

clip_image026

匿名函数

没有函数名的函数叫匿名函数。

语法

变量 = function(参数列表){

//函数体

//返回值

}; //整体是赋值语句,所以需要语句结束符

clip_image028

匿名函数的使用

因为变量保存了函数的地址,所以必须通过变量来找到函数。系统要识别函数,只认括号,需要给变量增加一个括号来告诉系统当做函数处理。

clip_image030

匿名函数的使用

匿名函数通常用于做别的函数的参数:回调函数

伪类型

指的是定义好的函数,需要指定的数据类型作为参数或者返回值,是一种对用户的帮助。

mixed:数据类型有很多种,不具体限制

number:数字类型:整型和浮点型

callback:回调函数,指的需要一个可以被执行的函数的名字字符串。

clip_image032

void:null,不需要参数或者没有返回值

可变函数

可以变化的函数,函数名字是一个变量的值,可以通过变量直接访问函数。

clip_image034

posted on 2016-04-20 22:00  山山未迟  阅读(270)  评论(0编辑  收藏  举报