全局变量和局部变量
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
让我们来谈谈一个重要的概念:作用域。作用域可以是全局或局部。
在函数外部定义的变量一旦被声明就可以在任何地方访问,它们被称为全局变量或者说它们的作用域是全局的。
例如:
var globalVar = "hello";
var foo = function() {
console.log(globalVar); // 打印出 "hello"
}
变量globalVar
可以在任何地方访问,甚至在函数foo
。
函数内部定义的变量是局部变量。他们无法在函数外部访问。
例如:
var bar = function() {
var localVar = "howdy";
}
console.log(localVar); // error
函数内的变量localVar
仅存在于函数bar
中。它试图在函数以外打印localVar
,所以给出了一个错误。
在编辑器中查看代码,直到现在你一直在使用var关键字,但并没有真正理解为什么。var
关键字会在当前作用域创建一个新的变量。这意味着,如果变量被声明在函数之外,该变量就具有全局的作用域。如果变量被声明在函数中,该变量就具有局部的作用域。
在第4行,我们没有使用var关键字,所以我们在函数外用console.log
打印出my_number
的值将会是14。
说明:
1. 修改第4行使用var
关键字。
2. 注意到函数内打印的my_number
值为14,而函数外是7。
3. 使用没有用var
声明的my_number变量时,它指的是在第一行中声明的my_number,如果在函数中用var声明后,它将是一个新的变量,作用域只存在与这个函数中。
在线练习
{$ activeFileHint $}