在 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