作用域
编程语言中作用于域的定义
Scope refers to the visibility of variables. In other words, which parts of your program can see or use it.
译为:作用域指的是变量的可见性, 换句话说, 就是程序可以看见和使用的那部分变量。
JS中的作用域
JS采用的是词法作用域(Lexical scope, static scope)
Lexical scoping (sometimes known as static scoping ) is a convention used with many programming languages that sets the scope (range of functionality) of a variable so that it may only be called (referenced) from within the block of code in which it is defined. The scope is determined when the code is compiled.
译为: 词法作用域(有时也称为静态作用域)是许多编程语言使用的一种约定,它设置变量的范围,以便于只能从定义它的代码块中调用它。作用域在代码编译阶段决定。
当然有静态作用域就会有动态作用域,这里不多做讨论。
举个例子
let a = 'global'
function showA() {
console.log(a)
}
function foo() {
let a = 'foo'
showA()
}
foo() // 'global'
例子中, 在foo方法中调用了showA方法,最终打印出来的结果居然是'global'! 为什么? showA方法在编译阶段就将a指向了全局中的a。牢记那句话作用域在代码编译阶段决定!
网友评论