0

Wondering why string concatenation is faster than array join, I came across this post which features the following code:

// ECMA-262, section 15.5.4.6
function StringConcat() {
  if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) {
    throw MakeTypeError("called_on_null_or_undefined", ["String.prototype.concat"]);
  }
  var len = %_ArgumentsLength();
  var this_as_string = TO_STRING_INLINE(this);
  if (len === 1) {
    return this_as_string + %_Arguments(0);
  }
  var parts = new InternalArray(len + 1);
  parts[0] = this_as_string;
  for (var i = 0; i < len; i++) {
    var part = %_Arguments(i);
    parts[i + 1] = TO_STRING_INLINE(part);
  }
  return %StringBuilderConcat(parts, len + 1, "");
}

This is the first time ever in my life that I see that usage of the module operator. However, running let x = %myFunction(); leads to a syntax error:

Uncaught SyntaxError: Unexpected token '%'

What is going on here?

Adrian
  • 1,558
  • 1
  • 13
  • 31

0 Answers0