# Why does this click handler run immediately?

**URL:** <https://forum.kirupa.com/t/why-does-this-click-handler-run-immediately/679688>\
**Category:** web dev\
**Created:** [March 30, 2026, 6:00am UTC](https://forum.kirupa.com/t/why-does-this-click-handler-run-immediately/679688 "2026-03-30T06:00:06Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![WaffleFries](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/wafflefries/32/31185_2.png) [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Post date:** [March 30, 2026, 6:00am UTC](https://forum.kirupa.com/t/why-does-this-click-handler-run-immediately/679688/1 "2026-03-30T06:00:06Z")

</div>

Quick DOM question.

```javascript
button.addEventListener('click', save());

```

Why does `save` run right away, and what is the correct version.

WaffleFries

---

<div class="post-metadata">

**Author:** ![Yoshiii](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yoshiii/32/31156_2.png) [@Yoshiii](https://forum.kirupa.com/u/Yoshiii)\
**Post date:** [March 30, 2026, 6:07am UTC](https://forum.kirupa.com/t/why-does-this-click-handler-run-immediately/679688/2 "2026-03-30T06:07:06Z")

</div>

Because `save()` calls the function immediately and passes its return value to `addEventListener`.

Yoshiii

---

<div class="post-metadata">

**Author:** ![HariSeldon](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hariseldon/32/31261_2.png) [@HariSeldon](https://forum.kirupa.com/u/HariSeldon)\
**Post date:** [March 30, 2026, 6:21am UTC](https://forum.kirupa.com/t/why-does-this-click-handler-run-immediately/679688/3 "2026-03-30T06:21:05Z")

</div>

Wrap it in a function or pass the function reference directly, so use `button.addEventListener('click', save)` or `button.addEventListener('click', () => save())` if you need arguments.

Hari
