JavaScript Closure, Scope
Scope
- In JavaScript, objects and functions are also variables.
- In JavaScript, scope is the set of variables, objects, and functions you have access to.
- JavaScript has function scope: The scope changes inside functions.
Local Variables
- Variables declared within a JavaScript function, become LOCAL to the function.
- Local variables have local scope: They can only be accessed within the function.
-
Since local variables are only recognized inside their functions, variables with the same name can be used in different functions.
Local variables are created when a function starts, and deleted when the function is completed.
Global Variables
- A variable declared outside a function, becomes GLOBAL.
- A global variable has global scope: All scripts and functions on a web page can access it.
- In Browser JS Global scope is window
Automatically Global
- If you assign a value to a variable that has not been declared (var), it will automatically become a GLOBAL variable.
- This code example will declare carName as a global variable, even if it is executed inside a function.
Lifetime of JavaScript Variables
- The lifetime of a JavaScript variable starts when it is declared.
- Local variables are deleted when the function is completed.
- Global variables are deleted when you close the page.
- Function arguments (parameters) work as local variables inside functions.
JavaScript Hoisting
- Hoisting is JavaScript's default behavior of moving declarations to the top
- In JavaScript, a variable can be declared after it has been used
- In other words: a variable can be used before it has been declared
- Hoisting is JavaScript's default behavior of moving all declarations to the top of the current scope (to the top of the current script or the current function).
x = 6;
x = x * 2 + 1;
var x;
var x;
x = 6;
x = x * 2 + 1;
The same
Use Strict
- "use strict"; Defines that JavaScript code should be executed in "strict mode"
- The purpose of "use strict" is to indicate that the code should be executed in "strict mode"
- With strict mode, you can not, for example, use undeclared variables
"use strict";
x = 3.14; // This will cause an error (x is not defined)
Closure
- JavaScript variables can belong to the local or global scope
- Private variables can be made possible with closures
- A closure is created when an inner function is made accessible from outside of the function that created it
Nested Functions
- All functions have access to the global scope.
- In fact, in JavaScript, all functions have access to the scope "above" them.
- JavaScript supports nested functions. Nested functions have access to the scope "above" them.
- In this example, the inner function plus() has access to the counter variable in the parent function:
return function
self-invoking
CLOSURE modules
Recursion
Recursion is an important programming technique, in which a function calls itself
Validation
http://www.jslint.com/ JSLint
http://jshint.com/ JSHint
Home work
https://learn.javascript.ru/functions-closures Замыкания, область видимости
John Resig - Secrets of the JavaScript Ninja - Книга
http://gabdrahimov.ru/javascript-oglavlenie JS Учебник
http://habrahabr.ru/post/38642/ Замыкания в JavaScript
https://developer.mozilla.org/ru/docs/Web/JavaScript/Closures Замыкания
Class work
You can find in the OneDrive folder
THANKS FOR YOUR ATTENTION
JAVASCRIPT CLOSURE, SCOPE
JavaScript Closure, Scope
By Dima Pikulin
JavaScript Closure, Scope
- 1,167