JavaScript中的作用域是我们可以有效访问变量或函数的区域。JS有三种类型的作用域:全 局作用域、函数作用域和块作用域(ES6)。
全局作用域——在全局命名空间中声明的变量或函数位于全局作用域中,因此在代码中的任何 地方都可以访问它们。
//global namespace
var g = "global";
function globalFunc(){
function innerFuncO {
console. log(g); // can access "g" because "g" is a global variable
}
innerFunc ();
}
函数作用域——在函数中声明的变量、函数和参数可以在函数内部访问,但不能在函数外部访 问。
function myFavoriteFunc(a) {
if (true) {
var b = "Hello " + a;
}
return b;
}
myFavoriteFunc("World");
console. log(a); // Throws a ReferenceError "a" is not defined console. log(b); // does not continue here
块作用域-在块{}中声明的变量(let, const)只能在其中访问。
function testBlock() {
if(true){
let z = 5;
}
return z;
}
testBlock(); // Throws a ReferenceError "z" is not defined
作用域也是一组用于查找变量的规则。如果变量在当前作用域中不存在,它将向外部作用域中 查找并捜索,如果该变量不存在,它将再次查找直到到达全局作用域,如果找到,则可以使用 它,否则引发错误,这种查找过程也称为作用域链。
/*作用域链
内部作用域-〉外部作用域-> 全局作用域
*/
//全局作用域
var variablel = "Comrades";
var variable2 = "Sayonara";
function outer () {
//外部作用域
var variablel = "World";
function inner () {
//内部作用域
var variable2 = "Hello";
console. log(variable2 + " " + variablel);
}
inner ();
}
outer(); // Hello World

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.