Есть код.
"use strict"
var rabbit = "Где кролик?";
var hat = new function(){
var rabbit = "Вот он, кролик";
}
var why = function(){console.log(rabbit)};
Можно ли как-то достать переменную из объекта используя функцию why?
__________________________________________
Перечисленные ниже ответы верны. Здесь я просто подытожу.
Достать кролика из шляпы возможно. Для этого нам понадобится волшебная палочка.
Вот итоговый код:
"use strict"
var rabbit = "Где кролик?";
var hat = new function(){
var rabbit = "Вот он, кролик";
this.toString = function(){
return rabbit
}
}
alert(rabbit);
alert(hat);
Как было сказано ниже, сборщик мусора удаляет внутреннюю переменную после выполнения функции (var перекрывает внешнюю переменную создавая внутреннюю), тем более если она не использовалась.
Поэтому ее надо куда-то записать. У нас это будет toString (строковое представление объекта), который и покажет нам кролика в шляпе.