Scopes (es)
by juanmirod
HTML
<div id="content">
</div>
JavaScript
// Pequeño ejercicio sobre ámbitos, para más info en ámbitos en JavaScript:
// https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures
//'use strict'; // descomentar para ver el error al usar la variable bye
var hi = 'Global: I am global. '
var ObjectWithPrivateVariables = function ObjectDefinition() {
// Esta variable está definida dentro del ámbito de la functión ObjectDefinition
var hi = 'Object: Hello. '
//var bye; // descomentar para arreglar la fuga de la variable bye al ámbito global
return {
sayHi: function returnsAGreeting() {
// El ámbito de esta función está dentro del ámbito de OnjectDefinition
return hi
},
sayBye: function byes() {
bye = "Good bye!"
return bye
}
}
}
var newObject = new ObjectWithPrivateVariables()
var content = document.getElementById('content')
content.innerHTML += newObject.sayHi()
content.innerHTML += hi // Accede a la variable Global
content.innerHTML += newObject.sayBye()
content.innerHTML += bye // Esta variable se ha declarado como global y podemos acceder a ella, cuidado!!
content.innerHTML += sayHi // sayHi es undefined