Scope Chain & Closure

我们先来小试身手,在这之前我们必须有function scopeglobal varible的基本知识


let a = "hello"

function test1(){
    var a = "Goodbye"
    console.log(a) // Goodbye
    test2() 
}

function test2(){
        console.log(a) //hello
}
test1()

首先我们在全域定义 a = "hello",在function test1里面又定义一次 a = "Goodbye",想当然尔function scope
就会输出Goodbye,并且function test1 callback function test2,但是test2并没有定义a ,那就会变成从全域变数找有没有a的数值,并且找到 a = "hello!!!


接下来让我们把function 改的复杂一点

let a = "Dennis"

function test1(){
    var a = "Jessica"
    console.log(a) //Jessica

    function test2(){
        console.log(a) //Jessica
    }

    function test3(){
        var a = "Jack"
        console.log(a) //Jack
        test2()
    }
    test3()
}


test1()

首先看到test1是一个function scope,定义 a = "Jessica"并且里面有两个function,function test3 call function test2,但function test3定义 a = "Jack",所以function test3会输出"Jack",但是function test2 是function test1里面的所以会抓取function test1的 a,最後输出 "Jessica"


<<:  iOS工程师面试深入浅出- 物件导向的三大特性?

>>:  CallStack

他可以坚持,或许我也可以

最近对於自己的未来产生了另一个茫然。 自己会什麽,能给别人什麽,别人又怎麽样会觉得那很棒。 每当遇到...

Day16 职训(机器学习与资料分析工程师培训班): MVC & MTV架构

上午: AIoT资料分析应用系统框架设计与实作 今天教学一些Django的一些格式用法,及MTV架构...

【左京淳的JAVA学习笔记】第五章 class定义与物件生成

如果把程序当成是魔法,前面几章都是基本的咒文。 到这章开始需要用到想像力了。 class(类) cl...

[FGL] TYPE / FUNCTION / INTERFACE 让FGL更贴近物件语言

这一篇是我很纠结的,但是总是要来面对。 TYPE 定义基本或结构化数据类型 从 Genero 2....

Day 19: SOLID 设计原则 — LSP (待改进中... )

「在物件导向革命的最初几年,我们将 LSP 视为指导『继承的使用』的一种方式。然而,LSP 可以扩...