20141223--全局使用局部变量+静态变量-01

回顾

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

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

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

自定义函数

返回值

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

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

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

参数传值

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

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

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

引用传递

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

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

内存分析

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

参数作用

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

作用域

作用域概念

1. 什么是作用域?

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

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

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

全局作用域

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

局部作用域

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

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

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

全局作用域:

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

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

作用域证明

跨域使用变量

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

局部使用全局作用域

方案一:

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

方案二:

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

全局使用局部作用域

方案一

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

方案二

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

方案三

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

引用全局变量

创建全局变量

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

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

参数默认值

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

语法:形参 = 默认值

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

静态变量

1. 什么是静态变量?

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

语法:static $变量

内存分析

匿名函数

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

语法

变量 = function(参数列表){

//函数体

//返回值

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

匿名函数的使用

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

匿名函数的使用

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

伪类型

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

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

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

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

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

可变函数

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

时间: 2024-12-17 05:32:20

20141223--全局使用局部变量+静态变量-01的相关文章

成员变量和局部变量,静态变量的区别

成员变量和局部变量,静态变量的区别 1.成员变量和局部变量的区别 1)在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 2)在内存中的位置不同 成员变量:在堆内存(成员变量属于对象,对象进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 4)初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,

成员变量(实例变量)&局部变量&静态变量(类变量)的区别

成员变量(实例变量)&局部变量区别: (1)作用域 成员变量:针对整个类有效. 局部变量:只在某个范围内有效.(一般指的就是方法,语句体内) (2)存储位置 成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中. 局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中. 当方法调用完,或者语句结束后,就自动释放. (3)初始值 成员变量:有默认初始值. 局部变量:没有默认初始值,使用前必须赋值. 成员变量(实例变量)&静态变量(类变量)区别: A:调用方式 静态变

Java变量类型,实例变量 与局部变量 静态变量

实例变量: 实例变量在类中声明,但在方法的外面,构造函数或任何块. 当空间分配给某个对象在堆中,插槽为每个实例变量创建值. 当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量. 实例变量认为必须由一个以上的方法,构造函数或块,或一个对象的状态的关键部分必须出现在整个类中引用的值. 实例变量可以在使用前或后级的级别声明. 访问修饰符可以给出实例变量. 实例变量对于所有方法,构造函数和块在类中可见.通常,建议,使这些变量私有(接入层).然而能见度子类可以给这些变量与使用访问修

Java基础——成员变量、局部变量和静态变量的区别

之前在刚开始学习Java的时候,就谈了谈Java基础中的变量,虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量.局部变量和静态变量.变来变去太容易让人搞晕了,挑拣出来梳理一下喽! 要想区分这哥仨,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中,最基本的单位是类,类就是用来体现事物的. 用类class来描述事物也是如此: 属性:对应类中

【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别

局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中.     创建时若未初始化,则为随机值. 全局变量: 创建在static区,生命周期一直存在. 创建时若未初始化,则为0. 静态局部变量: 切断了外部链接属性.创建在static区. 创建时若未初始化,则为0. 全局变量和静态变量的存储是放在一块的,初始化了的全局变量和静态变量在一块区域,  未初始化的全局变量和未初始化的静态变量在相邻的另一块区域. 全局静态变量: 切断了外部链接属性,创建在static区,生命周期一直存在. 创建

比较全局变量、全局静态变量、局部变量、局部静态变量的区别

比较全局变量.全局静态变量.局部变量.局部静态变量的区别,他们在编译完后存储位置在什么地方.初始化值在什么地方.内存什么时候分配.赋初值对这些变量有哪些影响等.要弄清楚这些问题,首先要弄清楚下面几个知识点. C语言分下面几个存储区: 1.栈区(stack) 由编译器在需要的时候自动分配释放,在不需要的时候就自动清除的变量存储区.通常存放的变量是函数的参数值.局部变量的值等,其操作方式类似于数据结构中的栈. 2.堆区(heap) 一般由程序员去分配释放,和编译器完全没有关系,直接由我们的应用程序去

iOS中block 静态全局局部变量block变量,以及对象,详解!

//最近总是犯迷糊,关于block对外部变量的引用,今天有时间就写了一下,加深自己的理解,巩固基础知识 1 #import <Foundation/Foundation.h> 2 int gNum = 100; 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 static int sNum = 100; 6 __block int bNum = 100; 7 int lNum = 100; 8 int (^s

C++局部变量、全局变量、静态变量(堆、栈、静态存储区)

1 static关键字 1.1 隐藏 eg: //a.c文件中 char a = 'A'; void msg() { printf("Hello\n"); } //main.c文件中 extern char a; printf("%c",a); 输出结果:A Hello 所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问.a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的. 如果加了stat

静态变量,全局变量,局部变量的区别

1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局作用域.全局变量只需在一个源文件中定义,就可以作用于所有的源文件.当然,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量. 2>静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静