每个函数都会默认创建一个作用域
例子
function fn(){
let a = 1
}
console.log(a)//a不存在
a 只在函数作用域里生效,在外面访问不到
全局变量和局部变量
- 在顶级作用域声明的变量是全局变量
- window 的属性是全局变量
-
函数可嵌套,作用域也可嵌套
function f1(){
let a = 1
function f2(){
let a = 2
console.log(a)
}
console.log(a)
a = 3
f2()
}
f1()
如果多个作用域有同名变量a
那么查找 a 的声明时,就向上取最近的作用域
简称「就近原则」
查找 a 的过程与函数执行无关
但 a 的值与函数执行有关function f1(){
let a = 1
function f2(){
let a = 2
function f3(){
console.log(a)
}
a = 22
f3()
}
console.log(a)
a = 100
f2()
}
f1()