gazes12
@gazes12

Как проверить передан ли в параметр функции event?

Код ниже не работает.

function func(data){
    if(data == event){ 
        var id = data.target.id; 
    }else{
        var id = data;
    }
}

/*Функции может вызываться два раза,  при этом с разными параметрами*/
func(result.comment[0].id)
func(event);


Как я могу проверить что data равняется event`у? Буду рад за помощь!
  • Вопрос задан
  • 178 просмотров
Решения вопроса 2
RAX7
@RAX7
Можно с помощью оператора instanceof
function func(data) {
  if (data instanceof Event) {
    var id = data.target.id;
  } else {
    var id = data;
  }
}

Но лучше использовать кастомные события и проверять наличие поля detail в объекте события
function func(event) {
  const id = event.detail ? event.detail.id : event.target.id;
}
domElement.dispatchEvent(new CustomEvent('event-name', { detail: { id: 'id-42' } }));
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Попробовать так и сяк
function func(mixedData) {
  const id = mixedData?.target?.id ?? mixedData;
  console.log(id);
}

func(123) // 123
func({target: {id: 456}}) // 456

Что это было?!
?.optional chaining
??Nullish coalescing operator

Но это всё не фэн-шуёво, не аккуратненько как-то.
Лучше бы функции строго принимать один тип параметра — ожидать только id.
А что-то поменять при вызовах.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы