Как проверить функциональность оператора с тремя знаками равенства и обещает поддержку в JS? - PullRequest
0 голосов
/ 19 января 2020

Я пишу сценарии, которые хочу разделить на несколько модулей. «Базовые» модули будут поддерживать старые браузеры, которые не поддерживают новый синтаксис, такой как === и обещания.

«Продвинутые» модули будут загружены, если браузер пройдет проверку функций.

У меня вопрос: как проверить, поддерживает ли браузер оператор === и .then(function(){}) обещать синтаксис, фактически не используя их в первую очередь и вызывая синтаксическую ошибку в старых браузерах?

if (/*what goes here*/) {
    var script = document.createElement('script');
    script.src = '/advanced.js';
    script.async = false;
    document.head.appendChild(script);
}

1 Ответ

0 голосов
/ 19 января 2020

Если браузер поддерживает обещания, он будет поддерживать then. Один из способов ( среди прочих ) проверить, поддерживает ли браузер обещания (без выдачи ошибки), - проверить, существует ли window.Promise:

if(window.hasOwnProperty("Promise"))
{
  console.log("Promises are supported.");
}
else
{
  console.log("This browser does NOT support promises.");
}

Что касается ===, я не думаю, что вам придется беспокоиться об этом. === был добавлен в ECMAscript в 3-м издании в декабре 1999 года, и трудно представить кого-либо (даже несгибаемого отсталого), использующего сегодня браузер, который его не поддерживает.

ОБНОВЛЕНИЕ:

Если вы действительно настаиваете на обнаружении поддержки ===, мой вывод (из моих комментариев ниже) заключается в достижении sh этого путем исследования того, какие браузеры не поддерживают === и Browser Detection для обнаружения этих браузеров. Я надеюсь, что кто-то другой предлагает вам более простой способ, о котором я не думаю.

...