Używamy siebie funkcję wykonywania, zarządzać zmiennym.
Zakres zmiennej jest regionem o programie, w którym jest zdefiniowana. Zmienna globalna ma zasięg globalny; jest zdefiniowany wszędzie w twoim kodzie JavaScript. (Nawet w swoich funkcjach). Z drugiej strony, zmienne zadeklarowane w funkcji są zdefiniowane tylko w treści funkcji. Są to zmienne lokalne i mają zasięg lokalny. Parametry funkcji są również liczone jako zmienne lokalne i są zdefiniowane tylko w treści funkcji.
var scope = "global";
function checkscope() {
alert(scope);
}
checkscope(); // global
Jak widać, można uzyskać dostęp do zmiennej scope
wewnątrz funkcji, ale w ciele funkcji, zmienna lokalna ma pierwszeństwo przed globalnej zmiennej o tej samej nazwie. Jeśli zadeklarujesz zmienną lokalną lub parametr funkcji o tej samej nazwie, co zmienna globalna, skutecznie ukryjesz zmienną globalną.
var scope = "global";
function checkscope() {
var scope = "local";
alert(scope);
}
checkscope(); // local
alert(scope); // global
Jak widać, zmienna wewnątrz funkcji nie zastąpi zmiennych globalnych. Z powodu tej funkcji wstawiamy kod do funkcji self executing, , aby zapobiec zastąpieniu innych zmiennych, , gdy nasz kod stanie się duży i duży.
// thousand line of codes
// written a year ago
// now you want to add some peice of code
// and you don't know what you have done in the past
// just put the new code in the self executing function
// and don't worry about your variable names
(function() {
var i = 'I';
var can = 'CAN';
var define = 'DEFINE';
var variables = 'VARIABLES';
var without = 'WITHOUT';
var worries = 'WORRIES';
var statement = [i, can, define, variables, without, worries];
alert(statement.join(' '));
// I CAN DEFINE VARIABLES WITHOUT WORRIES
}());
Utrzymanie globalnej przestrzeni nazw w czystości jest jeden konkretny powód - zmniejszając tym samym prawdopodobieństwo konfliktu. – techfoobar