Concept:
A static scope refers to a piece of code that has its scope defined before it executes, simply to determine where it can be applied (variables) before it executes.
A dynamic scope determines its scope, and the scope chain, when the code executes.
Static scope:
var a = ten; function fn () { var b = 1; Console.log (a+b);} FN (); One
In the creation of the function FN has been determined that it can function those variables, if the function FN has a variable a in the function FN directly inside the variable A, if not on the upper level to find, this is the static scope.
Dynamic scope:
var a = ten; function fn (a) { var b = 1; Console.log (a+b);} FN (1); 2
You would doubt that you would say that the function FN has defined its scope when it was created? Why isn't it now? In fact, it did determine its scope at first, but because you wrote the parameter when you called the FN, the scope of the function FN changed and became the dynamic scope, so it worked on the variable A in the function body.
The static scope and dynamic scope of the depth scope