作用域
- 作用域是指代码中定义变量的区域。
- 作用域规定了如何查找变量,也就是确定当前代码执行对变量的访问权限
- JavaScript采用的是词法作用域,也就是静态作用域。
静态作用域和动态作用域
var value = 1
function foo(){
console.log(value) // 1
}
function bar(){
var value = 2
foo()
}
bar()
静态作用域
执行foo()函数,先从foo函数内部查找是否有value变量,如果没有则去上一层作用域去寻找,也就是value=1,所以结果打印1
动态作用域
- bash就是动态作用域
value=1
function foo () {
echo $value;
}
function bar () {
local value=2; // 2
foo;
}
bar
动态作用域
执行foo()函数,先从foo函数内部寻找是否有value变量,如果没有,则去调用函数的作用域去寻找,也就是bar函数内部寻找value变量,结果打印2