JavaScript中的作用域
1.全局作用域
JavaScript中,在{}外面的作用域,我们就称之为全局作用域
//全局作用域
var num1 = 123;
let num2 = 456;
if(...){
...
}
2.局部作用域
JavaScript中,在函数后面{}中的作用域,我们就称之为局部作用域
//局部作用域
function test() {
console.log("Hello World!");
}
3.块级作用域
JavaScript中,只要是没有和函数结合在一起的{}中的作用域, 我们就称之为块级作用域
//块级作用域
if (...) {
...
}
while (...) {
...
}
do {
...
}while (...)
4.注意点
在块级作用域中,通过var定义的变量是全局变量,而通过let定义的变量是局部变量
if (true) {
//全局变量var num1 = 123;
//局部变量
let num2 = 456;
}
console.log(num1);
console.log(num2);
在局部作用域中,通过var定义的变量是局部变量,通过let定义的变量也是局部变量
function test() {
//局部变量
var num1 = 123;
//局部变量
let num2 = 456;
}
test();
console.log(num1);
console.log(num2);
无论是在块级作用域还是在局部作用域中,省略定义变量的关键字let或var,那么该变量就会变为全局变量
if(true) {
num1 = 123;
num2 = 456;
}
function test() {
num3 = 111;
num4 = 222;
}
test();
console.log(num1);
console.log(num2);
console.log(num3);
console.log(num4);