Why are some of the function invocations preceded by a % in JS files for v8 source?

前端 未结 1 1806
Happy的楠姐
Happy的楠姐 2020-12-06 11:43

I saw % in many codes. Can you explain to me its purpose or what it does?

Edit: I know the operand in math 13 % 10 = 3 but what I saw is li

相关标签:
1条回答
  • 2020-12-06 12:04

    Based on the link you provided in the comments, the % character appears to be used in some of the V8 JavaScript engine source code to indicate a method of the C++ runtime that will be executed while parsing the JavaScript source.

    For example, the line in string.js:

    return %StringBuilderConcat(parts, len + 1, "");
    

    When encountered by the parser, the StringBuilderConcat method will be executed. You can find a list of the runtime methods available to the V8 JavaScript files in runtime.h (note, I have no experience with C++, so for all I know this has nothing to do with the StringBuilderConcat method referenced in string.js, but I think it's the same thing):

    #define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \
      /* Property access */ \
      F(GetProperty, 2, 1) \
      F(KeyedGetProperty, 2, 1) \
      /* ... */
      F(StringBuilderConcat, 3, 1) \
      /* ... */
    

    As has already been stated, return %foo would throw a SyntaxError in JavaScript.

    0 讨论(0)
提交回复
热议问题