在 JavaScript 中,变量的作用域只有两种方式:
- 全局作用域
- 函数作用域
请记住,JavaScript 中的作用域是在我们使用 var关键字定义变量时声明的。
全局作用域(Global Scope)
在 javascript 中声明的变量在以下情况下将具有全局作用域
在任何函数之外定义的变量
//'foo' 是一个全局变量
var foo = 'I am GLOBAL foo';
//'foo' 是函数局部变量
function test() {
var foo = 'I am LOCAL foo';
}
console.log(foo); // 全局变量
在任何函数中定义的变量 - 不使用 'var' 关键字
//'foo' 函数局部变量
function test() {
foo = 'I am GLOBAL foo';
}
console.log(foo); // 全局变量
console.log(window.foo); // 全局变量
所有全局范围的变量都作为“window”对象的属性可见。
混合全局和函数作用域变量
示例:我们将在单个页面的不同范围内使用变量 'foo',然后我们将清楚 javascript 范围是如何工作的。
//Define global scoped 'foo'
var foo = 'I am GLOBAL foo';
//Inside if block foo will refer to global foo
if ( true ) {
var foo = 'I am GLOBAL foo TOO';
console.log( foo ); //I am GLOBAL foo TOO
}
//As blocks do not have their own scope
//So foo in if block referred to global scope foo
//foo refer to new value
console.log( foo ); //I am GLOBAL foo TOO
//Inside function - foo has it's own declaration
function test() {
var foo = 'I am LOCAL foo';
console.log( foo ); //I am LOCAL foo
}
test();
//Ouside function foo is still globally declared foo
console.log( foo ); //I am GLOBAL foo TOO
看看 foo如何只在函数内部声明有它自己的作用域,否则所有的 foo变量都指向全局作用域 foo。
提示:无论作用域如何,我们都应该始终使用 var 初始化变量。
这样,变量将具有我们预期的范围,并且我们可以避免意外的全局变量。
www. On IT Road .com
函数作用域
从全局作用域细节可以清楚地看出,函数作用域变量是在函数内部使用 'var' 关键字声明的。
//'foo' 函数局部变量
function test() {
var foo = 'I am LOCAL foo';
console.log(foo); //I am LOCAL foo
}
console.log(foo); //foo未定义:
请注意,javascript 函数有自己的作用域,但块(例如 while、if 和 for 语句)没有。
日期:2020-09-17 00:10:39 来源:oir作者:oir
