Как передавать параметры при onclick?

Подскажите пожалуйста, как мне передавать параметры в функцию, кроме

<button id="btn1" onclick="myFunc('Hello')">Click1</button>
<button id="btn2" onclick="myFunc('By')">Click2</button>

?

Допустим:

let btn1 = document.getElementById('btn1');
let btn2 = document.getElementById('btn2');


btn1.onclick = myFunc;  //Как тут передать параметр, кроме того инлайн способа?
btn2.onclick = myFunc;

function myFunc(text){
   console.log(text)
}

Ответы (3 шт):

Автор решения: Alexander Lonberg

Вызвать дополнительную функцию:

function handler(text) {
  console.log(text)
}

document.querySelector('[data-b1]').addEventListener('click', () => handler('Hello'))
document.querySelector('[data-b2]').addEventListener('click', () => handler('By'))
<button data-b1>Hello</button>
<br>
<button data-b2>By</button>

Установить параметры элементу, например установим атрибут:

[...document.querySelectorAll('button')].forEach((e) => e.addEventListener('click', (e) => {
  console.log(e.target.dataset.text)
}))
<button data-text='Hello'>Hello</button>
<br>
<button data-text='By'>By</button>

→ Ссылка
Автор решения: Igor
btn1.onclick = myFunc.bind(null, 'Hello');

Function.bind

→ Ссылка
Автор решения: DiD

Самый лаконичный вариант. Доступны и передаваемые данные и объект события. Как бы, и волки сыты и овцы целы.

button1.addEventListener('click',createOnClick('text1'));
button2.onclick = createOnClick('text2');

function createOnClick(text){
  return (event) => {
    console.log(text, event.target.id);
  }
}
<button id="button1">Button 1</button>
<button id="button2">Button 2</button>

→ Ссылка