Tomé esto desde Google Code juegos http://code.google.com/apis/ajax/playground/cómo acceder a variables en cierres si hay variables locales con el mismo nombre?
/*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);
///////////////////////
Su todo bien, pero si tengo una variable local en la función interior con el mismo nombre que una variable en la función externa a continuación, cómo acceder a esa variable?
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);
¿Por qué no cambiar el nombre de uno de ellos? – kennytm
He insertado una línea var ss = someString; dentro de la función interna. Luego, cuando intenté acceder a ss, devolvió indefinido – Sriram
¿Muy similar/duplicado? pregunta: http://stackoverflow.com/questions/1484143/scope-chain-in-javascript –