在JavaScript中,作用域是指代码执行的当前上下文。作用域可以是全局的,也可以是本地的。全局作用域是默认作用域,在JavaScript文件加载到网页时创建。在全局作用域中,所有变量和函数都在窗口对象上定义。
另一方面,局部作用域是在函数内部创建的。当一个函数被执行时,一个新的局部作用域被创建,并且在该函数中定义的任何变量或函数只能在函数的局部作用域内访问。这被称为变量阴影,因为与全局变量同名的局部变量将优先于函数局部作用域内的全局变量。
JavaScript还有块级作用域的概念,它是在花括号内创建的。JavaScript中最常见的块级作用域示例是if语句。在块级作用域内定义的变量只能在该块内访问。
这是一个示例来说明JavaScript中的不同作用域:
const globalVariable = 'This is a global variable';
function myFunction() {
const localVariable = 'This is a local variable';
console.log(globalVariable); // Output: 'This is a global variable'
console.log(localVariable); // Output: 'This is a local variable'
}
console.log(globalVariable); // Output: 'This is a global variable'
console.log(localVariable); // Output: ReferenceError: localVariable is not defined
在此示例中,globalVariable在全局作用域内定义,并且可以从代码中的任何位置访问。另一方面,localVariable在myFunction函数中定义,并且只能在该函数的本地作用域内访问。尝试访问函数之外的localVariable将导致引用错误。