记录学习 -- 函数的上级作用域

2 篇文章 0 订阅
1 篇文章 0 订阅
本文探讨了JavaScript中函数的作用域概念,特别是函数的上级作用域与其定义位置而非执行位置有关。通过示例展示了fn函数在sum函数内部调用,但其作用域仍然指向全局的vara,因此输出为12。同时,介绍了函数内部函数f的闭包特性,即使在fn返回后,f仍能访问fn的作用域,导致多次调用x时,n值持续递增。强调了let变量的块级作用域特性,以及函数赋值给变量时实际赋值的是执行结果而非函数本身。
摘要由CSDN通过智能技术生成

函数的上级作用域:

函数执行,形成一个私有作用域,函数的上级作用域是谁,和他在哪里执行没有关系,和他在哪里创建(定义)的有关系,在哪创建,他的上级作用域就是谁:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值