Zakres leksykalny w js

0

Zakres leksykalny oznacza, że w zagnieżdżonej grupie funkcji funkcje wewnętrzne mają dostęp do zmiennych i innych zasobów ich zakresu nadrzędnego.

Zakładając, że funkcja wewnętrzna została wywołana w funkcja2, a funkcja2 została wywołana w funkcja1. W takiej sytuacji zakres leksykalny dla funkcji wewnętrznej to zarówno zakres z funkcja2 jak i funkcja1?

funkcja1() {
 funkcja2() {
   funkcjaWewnetrzna()
}
}
1

Lexical scope: https://en.wikipedia.org/wiki/Scope_(computer_science)

In languages with lexical scope (also called static scope), name resolution depends on the location in the source code and the lexical context (also called static context), which is defined by where the named variable or function is defined

W static scope językach, zmienne w wołanej funkcji są takie, jak w momencie zdefiniowania; czyli, Twoja wewnętrzna funkcja będzie miała dostęp do danych funkcji: funkcja1 i funkcja2, jeśli miała go w momencie definicji, np. tak:

def f1():
    a = 41
    def f2():
        b = a + 1
        def inner():
            print(a, b)
        return inner
    return f2

f1()()() # -> 41 42
0

@lion137: Jesteśmy w dziale JS, więc lepiej przykłady podawać właśnie w tym języku. Nie każdy zna Pythona, szczególnie początkujący i mimo intuicyjnego zapisu mogą nie zrozumieć przykładu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1