php
1 <?php 2 function fn(){ 3 echo "inside the function:" .$var ."<br />"; 4 $var = "con 2"; 5 echo "inside the function:" .$var ."<br />"; 6 } 7 $var = "con 1"; 8 fn(); 9 echo "outside the function:" .$var ."<br />"; 10 ?>
js
1 function fn2(){ 2 //因为dada已经存在fn2函数内部了。当它在函数内部找到这个变量之后就不往外找? 3 alert("inside the function:" + dada +"<br />"); 4 var dada = "con 2"; 5 alert("inside the function:" + dada +"<br />"); 6 } 7 var dada = "con 1"; 8 fn2(); 9 alert("outside the function:" + dada +"<br />");
如上两个代码片段,
php输出:
inside the function:
inside the function:con 2
outside the function:con 1
js输出:
inside the function:undefined
inside the function:con 2
outside the function:con 1
但是如果把红色的代码删除了,
php输出:
inside the function:
outside the function:con 1
js输出:
inside the function:con 1
outside the function:con 1
分析:
js代码中看到dada 后就在fn中找有没有定义,看到有定义了,所以就不往上面找?
但是因为定义在使用下面,所以值还是空。
删除了fn内部定义的变量后,因为在fn中没有找到dada的定义所以往外找,找到了所以为1?
php是怎么回事?
<?php
function fn(){
global $var1;
$var1 = "con 2";
echo "inside the function:" .$var1 ."<br />";
/* echo "inside the function:" .$var ."<br />";*/
}
fn();
echo "outside the function:" .$var1 ."<br />";
?>
如果在函数内部定义一个全局变量,那函数内部和外部都可以访问。
但是如果在函数外面定义,那函数还是访问不到?
<?php
$var1 = 4;
function fn($var1){
$var1 = $var1 +1 ;
echo "inside the function:" .$var1 ."<br />";
/* echo "inside the function:" .$var ."<br />";*/
}
fn($var1);
echo "outside the function:" .$var1 ."<br />";
?>
================================
global $var1;
$var1 = 4;
function fn(){
echo "inside the function:" .$var1 ."<br />";
}
fn();
echo "outside the function:" .$var1 ."<br />";
JS和PHP的变量是不同的,PHP内部和外部变量无法公用,除非使用Global或者引入等方法。
JS的话函数内部可以访问函数外部的变量,但是外部无法访问函数内部的变量。
可以使用
function fn(){
global $var1;
......
或者
function fn(&$var1){
.....