php变量和js变量的区别,PHP和JS中变量作用域

一,PHP中变量作用域

对于大多数PHP的变量只有一个作用域。在用户自定义函数里采用局部变量作用域。所有的函数内使用的变量被设置为局部变量。例如:

$a=1;

function test() {

echo $a;

}

test();

?>

这段程序不会输出任何的东西因为echo语句要输出局部变量 $a ,而函数内的 $a 从未被赋过值。你可能注意到和C语言有点小小的区别,C中全局变量可以直接在函数内引用,除非它被一个局部变量所覆盖。因为这使得人们可能不注意修改了全局变量的值。在PHP中要在函数内部使用全局变量必须显式的说明。例如:

$a=1;

$b=2;

function Sum() {

global $a,$b;

$b = $a + $b;

}

Sum();

echo $b;

?>

上面程序将输出"3"。通过在函数内部声明$a和$b是全局变量,所有变量都参考全局。一个函数可以操纵的全局变量的数量没有限制。第二种存取全局变量的方法是使用PHP定义的$GLOBALS数组。上面的例子可以写成:

$a=1;

$b=2;

function Sum() {

$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

}

Sum();

echo $b;

?>

$GLOBALS数组是:用全局变量的名字做键值而该变量的值做对应数组元素值的关联数组。作用域的另外一个重要的值得注意的地方是static 变量。

一个 static变量存在于局部函数中,但当程序离开这个函数时它的值不会丢失。

考虑下面的例子: 这个函数是没用的,因为每次调用时它都先把$a赋为 0 然后打印出"0"。

对$a++的自加没有任何效果因为函数调用结束后变量$a 就被释放了。要使记数程序有效记数而不丢掉当前的记数结果,

$a 要声名为static变量:

function test() {

$a=0;

echo $a;

$a++;

}

?>

现在,每次调用Test()函数它都会打印出$a的值并把增加它的值。当使用递归函数时静态变量是必不可少的。递归函数就是调用自己的函数。写递归函数时一定要十分小心,因为它的循环次数不确定。

你必须确保有足够的条件结束递归过程。下面是一个简单的递归函数记数到10:

function test() {

static $count=0;

$count++;

echo $count;

if($count < 10) {

test();

}

}

?>

二,JS中变量作用域

引用

js作用域

原文:http://www.cnblogs.com/usa007lhy/p/5437307.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值