Как передать параметр функции без ее немедленного запуска?

У меня возникла довольно странная проблема с попыткой собрать воедино несколько динамичное отображение Google Maps. У меня есть наложения на карту, которые я хотел бы вызвать при нажатии. Изначально все было жестко закодировано, поэтому у меня была функция для каждого оверлея, подобная этой:

google.maps.event.addListener(southEast, 'click', showSouth);
function showSouth() {
   // do stuff
}

Это работало без проблем, но потом я сделал всю страницу более динамичной, поэтому решил создать одну функцию, которая будет передавать идентификатор, а отображение на основе этого, и я чувствую, что это должно было быть изначально настроено в любом случае. Я изменил код, чтобы он выглядел примерно так:

google.maps.event.addListener(southEast, 'click', showArea(1));
function showArea(id) {
   // do stuff based on that id
}

Функция работала, но проблема в том, что она вызывается сразу при загрузке страницы. После исследования я узнал, что когда вы вызываете функцию со скобками, эта функция вызывается немедленно, а затем ссылаются на ее возвращаемое значение. источник

Итак, теперь я немного застрял в том, как именно передать этот идентификатор в функцию, не вызывая ее немедленно. Я нашел несколько хакерских способов сделать это, которые могут сработать, но я чувствую, что это не должно быть чем-то, что мне нужно хакать вместе...

17
задан Community 23 May 2017 в 12:34
поделиться