var value = 1 function foo(){ console.log(value) // 1 } function bar(){ var value = 2 foo() } bar() 静态做用域 执行foo()函数,先从foo函数内部查找是否有value变量,若是没有则去上一层做用域去寻找,也就是value=1,因此结果打印1
value=1 function foo () { echo $value; } function bar () { local value=2; // 2 foo; } bar 动态做用域 执行foo()函数,先从foo函数内部寻找是否有value变量,若是没有,则去调用函数的做用域去寻找,也就是bar函数内部寻找value变量,结果打印2