¿Por qué no se modifica mi variable después de modificarla dentro de una función? - Referencia de código asíncrono

Dados los siguientes ejemplos, ¿por qué outerScopeVarno está definido en todos los casos? var outerScopeVar; var img = document.createElement('img'); img.onload = function() { outerScopeVar = this.width; }; img.src = 'lolcat.png'; alert(outerScopeVar); var outerScopeVar; setTimeout(function()...