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 fn
php
1 php 2 function fn(){ 3 echo inside the function: .$var .
; 4 $var = con 2; 5 echo inside the function: .$var .
; 6 } 7 $var = con 1; 8 fn(); 9 echo outside the function: .$var .
;10 ?>
js
1 function fn2(){2 //因为dada已经存在fn2函数内部了。当它在函数内部找到这个变量之后就不往外找?3 alert(inside the function: + dada +
);4 var dada = con 2;5 alert(inside the function: + dada +
);6 }7 var dada = con 1;8 fn2();9 alert(outside the function: + dada +
);
如上两个代码片段,
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是怎么回事?