optional-chaining.js 432 B

123456789101112
  1. "use strict";
  2. var isValue = require("./object/is-value");
  3. var slice = Array.prototype.slice;
  4. // eslint-disable-next-line no-unused-vars
  5. module.exports = function (value, propertyName1 /*, …propertyNamen*/) {
  6. var propertyNames = slice.call(arguments, 1), index = 0, length = propertyNames.length;
  7. while (isValue(value) && index < length) value = value[propertyNames[index++]];
  8. return index === length ? value : undefined;
  9. };