Blog
Blog copied to clipboard
作用域与闭包 - 词法作用域和动态作用域
词法作用域和动态作用域
什么是作用域
作用域是指程序源代码中定义变量的区域,规定了如何查找变量,也就是确定了当前执行代码对变量的访问权限。
词法作用域
词法作用域 也叫静态作用域,即变量的作用范围在代码编写时就已确定,JavaScript
使用词法作用域。
通过下面JavaScript
代码例子来理解词法作用域(引自 冴羽的博客 ):
const scope = 'global scope'
function checkscope1(){
const scope = 'local scope 1'
function f(){
return scope
}
return f()
}
checkscope1()
// <- 'local scope 1'
function checkscope2(){
const scope = 'local scope 2'
function f(){
return scope
}
return f
}
checkscope2()()
// <- 'local scope 2'
动态作用域
动态作用域 即变量的作用范围在代码执行时才能确定,bash
是使用动态作用域的语言,可复制前往命令行粘贴查看结果。
value=1
function foo () {
echo $value;
}
function bar () {
local value=2;
foo;
}
bar
# <- 2