Судя по вашим комментариям, кажется, что вы ищете вот что:
function selectPlace(place) {
if(!place){
return selectPlace.placeId;
}else{
$('#selectPlace').html('Selected Place: <b>' + place.Name + '</b>');
$('#map').hide(400);
selectPlace.placeId = place.Id;
}
}
$(document).ready(function(){
$('#postMessage').click(function() {
alert("PlaceId: " + selectPlace());
});
});
Это не использует замыкание, оно просто сохраняет последний назначенный идентификатор объекта функции. Тогда вы бы вернули значение, если они не используют функцию в качестве установщика. Если бы вы хотели использовать замыкание для того же, это выглядело бы как в примере выше:
(function(){
var placeId;
window.selectPlace = function(place) {
if(!place){
return placeId;
}else{
$('#selectPlace').html('Selected Place: <b>' + place.Name + '</b>');
$('#map').hide(400);
placeId = place.Id;
}
}
})();
Кстати, самый простой способ определить замыкание - это если в функции есть переменные, которые не были объявлены с var
внутри текущей функции, но были в какой-то другой функции, внутри которой она находится. Как вы можете видеть выше, переменная placeId
не объявлена внутри функции selectPlace
, что означает, что функция selectPlace
является замыканием, использующим переменную placeId
.