函数的上级作用域:
函数执行,形成一个私有作用域,函数的上级作用域是谁,和他在哪里执行没有关系,和他在哪里创建(定义)的有关系,在哪创建,他的上级作用域就是谁:
var a = 12;
function fn() {
console.log(1)
}
function sum() {
var a = 123;
fn()
}
sum()
问,输出的 a 是 12 还是 123呢!
答:输出的是 12,因为函数的上级作用域,和他在哪里执行没有关系,fn() 函数是在 sum()中执行的,但是他是在 全局作用域下创建的,所以他的上级作用域是 全局作用域,所以 a 为 12;
练习:
var n = 10;
function fn () {
var n = 20
function f() {
n++
console.log(n)
}
f()
return f
}
var x = fn()
x()
x()
console.log(n)
注意: let 变量 = 函数()
赋值给变量,是把函数的执行结果进行赋值,而不是把函数的 存储地址进行赋值 。
学习视频地址 go go go