Wziąłem to z Google Code Playground http://code.google.com/apis/ajax/playground/jak uzyskać dostęp do zmiennych w zamknięciach, jeśli istnieją zmienne lokalne o tej samej nazwie?
/*CLOSURE
* When a function is defined in another function and it
* has access to the outer function's context even after
* the outer function returns
* An important concept to learn in Javascript
*/
function outerFunction(someNum) {
var someString = 'Hai!';
var content = document.getElementById('content');
function innerFunction() {
content.innerHTML = someNum + ': ' + someString;
content = null; // IE memory leak for DOM reference
}
innerFunction();
}
outerFunction(1);
///////////////////////
jej wszystko ok, ale jeśli mam zmiennej lokalnej w funkcji wewnętrznej o tej samej nazwie jako zmienna w funkcji zewnętrznej następnie jak uzyskać dostęp do tej zmiennej?
function outerFunction(someNum) {
var someString = 'Hai!';
var content = document.getElementById('content');
function innerFunction() {
var someString='Hello';
content.innerHTML = someNum + ': ' + someString;
content = null; // IE memory leak for DOM reference
}
innerFunction();
}
outerFunction(1);
Dlaczego nie zmienić nazwy jednego z nich? – kennytm
Wstawiłem linię var ss = someString; wewnątrz funkcji wewnętrznej. Wtedy, gdy próbowałem uzyskać dostęp do ss, wrócił niezdefiniowany – Sriram
Bardzo podobny/duplikat? pytanie: http://stackoverflow.com/questions/1484143/scope-chain-in-javascript –