Столкнулся с проблемой при проверке наличия функции в JavaScript. Вот мой код:
function получитьИд(идСвф) {
if (navigator.appName.indexOf('Microsoft') !== -1) {
я = window[идСвф];
} else {
я = document[идСвф];
}
}
function jsВAs(строка) {
я.приИзменении(строка);
}
Иногда приИзменении
не загружается, и Firebug выдает ошибку:
я.приИзменении не является функцией
Как можно проверить существование функции и выполнить ее только если она есть? Хочу обеспечить плавную деградацию, так как это не самая важная часть программы. typeof
дает ту же ошибку.
Пробовал разные методы, но пока только try-catch работает. Есть ли другие способы?
Из личного опыта, самый надёжный способ - использовать оператор &&. Примерно так:
я && я.приИзменении && я.приИзменении(строка);
Этот код проверяет существование объекта я, наличие метода приИзменении и вызывает его, если всё ок. Если что-то отсутствует, просто ничего не произойдёт. Простой и эффективный подход, который не требует дополнительных проверок и обработки ошибок. Использую его постоянно в своих проектах.
Можно попробовать такой вариант:
if (я && typeof я.приИзменении === ‘function’) {
я.приИзменения(строка);
} else {
console.log(‘Функция недоступна’);
}
Это проверит и существование объекта ‘я’, и наличие метода. Если что-то отсутствует, просто выведем сообщение в консоль. Так код не сломается, даже если функция не загрузилась.