全局作用域是指在代码中任何地方都能访问到的变量。在浏览器中,全局作用域是指window对象,所有在全局作用域中声明的变量和函数都会成为window对象的属性和方法。
var globalVar = 'I am a global variable';
function globalFunc() {
console.log('I am a global function');
}
console.log(window.globalVar); // 输出:I am a global variable
window.globalFunc(); // 输出:I am a global function
局部作用域是指在函数内部声明的变量和函数,只能在函数内部访问。当函数执行完毕后,局部作用域中的变量和函数会被销毁。
function localScope() {
var localVar = 'I am a local variable';
function localFunc() {
console.log('I am a local function');
}
console.log(localVar); // 输出:I am a local variable
localFunc(); // 输出:I am a local function
}
localScope();
console.log(typeof localVar); // 输出:undefined
localFunc(); // 报错:Uncaught ReferenceError: localFunc is not defined
在JavaScript中,作用域是通过词法作用域来实现的。词法作用域是指变量的作用域是在代码编写时确定的,而不是在运行时确定的。在JavaScript中,函数是可以嵌套的,内部函数可以访问外部函数的变量,而外部函数不能访问内部函数的变量。
function outer() {
var outerVar = 'I am an outer variable';
function inner() {
var innerVar = 'I am an inner variable';
console.log(outerVar); // 输出:I am an outer variable
}
inner();
console.log(innerVar); // 报错:Uncaught ReferenceError: innerVar is not defined
}
outer();