Check if optional chaining is supported

Viewed 246

I want to use a polyfill for optional chaining but I do not want to provide a polyfill for browsers which already support this feature.

Is there a way to determine whether a browser supports optional chaining ?

2 Answers

This works:

const isOptionalChainingSupported = () => {
  try {
    eval('const foo = {}; foo?.bar');
  } catch {
    return false;
  }

  return true;
}

I couldn't find any solutions online. I managed to come up with this:

const getIsOptionalChainingSupported = () => {
  try {
    const test = {};
    const isUndefined = test?.foo?.bar
    if (isUndefined === undefined) {
      return true
    }
  } catch {
    return false
  }
}
Related