See comment here: https://github.com/facebook/react/pull/11457#discussion_r148954193.

Although it seems very unlikely that someone would pass a one-character prop, the price (at least in versions of V8 in Chrome right now) is reported to be about 10x.

So we should check `.length` first and then do the comparison.

**Please comment if you want to take this issue.**
**If somebody already commented, please let them finish it.**
var lowerCased = propName.toLowerCase();
      var propConfig = Properties[propName];
      var propertyInfo = {
        attributeName: lowerCased,
        attributeNamespace: null,
        propertyName: propName,
        mutationMethod: null,
        mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
        hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
        hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
        hasPositiveNumericValue: checkMask(
          propConfig,
          Injection.HAS_POSITIVE_NUMERIC_VALUE,
        ),
        hasOverloadedBooleanValue: checkMask(
          propConfig,
          Injection.HAS_OVERLOADED_BOOLEAN_VALUE,
        ),
        hasStringBooleanValue: checkMask(
          propConfig,
          Injection.HAS_STRING_BOOLEAN_VALUE,
        ),
      };
      invariant(
        propertyInfo.hasBooleanValue +
          propertyInfo.hasNumericValue +
          propertyInfo.hasOverloadedBooleanValue <=
          1,
        'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +
          'numeric value, but not a combination: %s',