词法作用域与动态作用域
JavaScript 采用的是词法作用域(lexical scoping)
JavaScript 函数的作用域在函数定义的时候就确定了,所以实际使用的值与函数定义位置有关系。
1 | let value = 1 |
上面这个例子中,foo函数中的value向上寻找为在全局定义的1,所以会打印出1。
1 | value=1 |
而在bash中,由于是动态作用域,所以会打印出2。
一个例子
输出的都会是local。
1 | let text = "global" |
JavaScript 函数的作用域在函数定义的时候就确定了,所以实际使用的值与函数定义位置有关系。
1 | let value = 1 |
上面这个例子中,foo函数中的value向上寻找为在全局定义的1,所以会打印出1。
1 | value=1 |
而在bash中,由于是动态作用域,所以会打印出2。
输出的都会是local。
1 | let text = "global" |