DEV Community

Cover image for JavaScript EP4: JavaScript Engine ๐Ÿ› ๏ธโš™๏ธ
phatsss
phatsss

Posted on

JavaScript EP4: JavaScript Engine ๐Ÿ› ๏ธโš™๏ธ

เปƒเบ™ EP เบ™เบตเป‰เป€เบฎเบปเบฒเบˆเบฐเบกเบฒเป€เบงเบปเป‰เบฒเป€เบ–เบดเบ‡ JS Engine เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบˆเบฑเปˆเบ‡เปƒเบ”, เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบฎเบปเบฒเป€เบซเบฑเบ™เบžเบฒเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบ‚เบญเบ‡ JS เบซเบผเบฒเบเบ‚เบถเป‰เบ™. เป€เบฎเบปเบฒเป€เบ„เบตเบเบชเบปเบ‡เป„เบชเบšเปเปˆเบงเปˆเบฒเบšเบฑเบ™เบ”เบฒ machine เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆ code เบ—เบตเปˆเป€เบฎเบปเบฒเบ‚เบฝเบ™เป„เบ”เป‰เบˆเบฑเปˆเบ‡เปƒเบ”?. JavaScript Developer เบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš compilers เบ”เป‰เบงเบเบ•เบปเบงเป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบทเปƒเปเปˆเบซเบผเบฒเบเป†เบ„เบปเบ™เบเปเปˆเบšเปเปˆเป„เบ”เป‰เบชเบปเบ™เปƒเบˆเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เป€เบฅเบตเบ เปเบ•เปˆเบกเบฑเบ™เบเบดเปˆเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ–เป‰เบฒเป€เบฎเบปเบฒเบˆเบฐเบชเบถเบเบชเบฒ เปเบฅเบฐ เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš JavaScript Engine เปเบฅเบฐ เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบš code เบ—เบตเปˆเป€เบ›เบฑเบ™ human-friendly เปเบฅเบฐ เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆ machine เป€เบ‚เบปเป‰เบฒเปƒเบˆ๐Ÿš€.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เปเบกเปˆเบ™เปƒเบŠเป‰ NodeJS เบ—เบตเปˆ based on the V8 Engine เปเบฅเบฐ เปƒเบŠเป‰ Browser เบ—เบตเปˆเป€เบ›เบฑเบ™ Chromium-based.


HTML parser เบˆเบฐเบžเบปเบš script tag(<script></script>)เบ—เบตเปˆเบกเบตเบเบฒเบ™เบฅเบฐเบšเบธ JS source(เบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™ script tag เบซเบผเบท import เบกเบฒเบˆเบฒเบเป„เบŸเบฅเปŒเบ™เบญเบเบเปเปˆเป„เบ”เป‰). code เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบ load เบˆเบฒเบเบ—เบธเบเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบกเบฒเป€เบŠเบฑเปˆเบ™: network,cache เปเบฅเบฐ service worker เบ—เบตเปˆเบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเป‰เปเบฅเป‰เบง. response เบ—เบตเปˆเป„เบ”เป‰เบˆเบฒเบ requested script เปเบกเปˆเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบš stream of bytes เบ—เบตเปˆเบˆเบฐเบกเบต byte stream decoder เป€เบฎเบฑเบ”เปœเป‰เบฒเบ—เบตเปˆเปƒเบ™เบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ” stream of bytes เบซเบผเบฑเบ‡เบˆเบฒเบเบกเบฑเบ™เป‚เบซเบผเบ”เบชเบณเป€เบฅเบฑเบ”.
stream of bytes


byte stream decoder เบˆเบฐเบ—เบณเบเบฒเบ™เบชเป‰เบฒเบ‡ token เบ‚เบถเป‰เบ™เบกเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบณเบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ” stream of bytes เบชเบณเป€เบฅเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, 0066 เบ—เบณเบเบฒเบ™ decode เป„เบ”เป‰ f, 0075 เป„เบ”เป‰ u, 006e เป„เบ”เป‰ n, 0063 เป„เบ”เป‰ c, 0074 เป„เบ”เป‰ t, 0069 เป„เบ”เป‰ i, 006f เป„เบ”เป‰ o, เปเบฅเบฐ 006e เป„เบ”เป‰ n เบ•เบฒเบกเบ”เป‰เบงเบ white space. เป€เบšเบดเปˆเบ‡เบ„เบทเบเบฑเบšเบงเปˆเบฒเป€เบฎเบปเบฒเบ‚เบฝเบ™ function เป€เบŠเบดเปˆเบ‡เบ„เบณเบ™เบตเป‰เบเปเปˆเป€เบ›เบฑเบ™ reserved keyword เบขเบนเปˆเปƒเบ™ JavaScript, เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡ token เบ‚เบถเป‰เบ™เบกเบฒ เปเบฅเบฐ เบชเบปเปˆเบ‡เป„เบ›เบ—เบตเปˆ parser(เปเบฅเบฐ pre-parser, เบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบžเบฒเบเบซเบผเบฑเบ‡). เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบกเบฒเปเบกเปˆเบ™เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบš byte stream เบ—เบตเปˆเป€เบซเบผเบทเบญเป€เบŠเบฑเปˆเบ™เบเบฑเบ™.
decode the bytes into tokens


เบ•เบปเบง engine เบˆเบฐเปƒเบŠเป‰ parser 2 เบ•เบปเบงเบ„เบท: pre-parser เปเบฅเบฐ parser. เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เปœเป‰เบฒเป€เบงเบฑเบš, engine เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบซเบผเบตเบเบฅเปˆเบฝเบ‡เบเบฒเบ™ parsing code เบ—เบตเปˆเบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เปƒเบซเป‰. pre-parser เบˆเบฐ handles code เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เปƒเบŠเป‰เป„เบงเป‰ เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ•เบปเบง parser เบˆเบฐ handles code เบ—เบตเปˆเบˆเบณเป€เบ›เบฑเบ™. เบ–เป‰เบฒเบซเบฒเบ function เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆ user เบเบปเบ”เบ›เบธเปˆเบก,โ€‹ เบกเบฑเบ™เบเปเปˆเบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เบ—เบตเปˆ code เบˆเบฐเบ–เบทเบ compile เปƒเบ™เบ—เบฑเบ™เบ—เบตเบžเบฝเบ‡เป€เบžเบทเปˆเบญเป‚เบซเบผเบ”เปœเป‰เบฒเป€เบงเบฑเบšเบขเปˆเบฒเบ‡เบ”เบฝเบง. เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบ user เบเบปเบ”เบ›เบธเปˆเบก เปเบฅเบฐ เบกเบตเบเบฒเบ™ require code เบšเบฒเบ‡เบชเปˆเบงเบ™, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ› parser.

Parser เบˆเบฐเบ—เบณเบเบฒเบ™เบชเป‰เบฒเบ‡ node เบ•เบฒเบก token เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบ byte stream decoder, เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡ Abstract Syntax Tree เบซเบผเบท AST เบ”เป‰เบงเบ node เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™ ๐ŸŒฒ๐ŸŒณ.
Abstract syntax tree


เบ•เปเปˆเบกเบฒเบˆเบฐเป€เบ›เบฑเบ™เปœเป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡ interpreter, เป€เบŠเบดเปˆเบ‡ interpreter เบˆเบฐเบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™ AST เปเบฅเบฐ เบ—เบณเบเบฒเบ™เบชเป‰เบฒเบ‡ byte code เป‚เบ”เบเบญเบตเบ‡เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆ AST เบกเบต. เป€เบกเบทเปˆเบญ byte code เบ–เบทเบเบชเป‰เบฒเบ‡เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง, AST เบˆเบฐเบ–เบทเบเบฅเบถเบš เปเบฅเบฐ เบฅเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ(memory space) เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฎเบปเบฒเบเปเปˆเบกเบต byte code เบ—เบตเปˆ machine เป€เบ‚เบปเป‰เบฒเปƒเบˆเปเบฅเป‰เบง ๐Ÿš€.
generate byte code


เป€เบ–เบดเบ‡ byte code เบˆเบฐเป„เบงเบขเบนเปˆเบเปเปˆเบ•เบฒเบก, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เป„เบงเบเบงเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบญเบตเบ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ byte code เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบ‚เปเป‰เบกเบนเบ™เบ•เปˆเบฒเบ‡เป†เบˆเบฐเบ–เบทเบ generate เบ‚เบถเป‰เบ™, เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบˆเบฐเบชเบฒเบกเบฒเบ” detect เป„เบ”เป‰เบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเบณเปƒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบฅเบทเป‰เบญเบเป† เปเบฅเบฐ เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ data เบˆเบฐเบ–เบทเบเบ™เบณเบกเบฒเปƒเบŠเป‰. เบšเบฒเบ‡เป€เบ—เบทเปˆเบญเป€เบฎเบปเบฒเบเปเปˆเป€เบญเบตเป‰เบ™เปƒเบŠเป‰ function เป€เบ›เบฑเบ™เบชเบดเบšเป†เบฎเบญเบš, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰เป€เบฎเบปเบฒเบˆเบฐเบ—เบณเบเบฒเบ™ optimize เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบงเป‰เบ‚เบถเป‰เบ™.
byte code เปเบฅเบฐ type feedback เบ—เบตเปˆเบ–เบทเบ generate เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ› optimizing compiler เบžเป‰เบญเบกเป†เบเบฑเบ™. optimizing compiler เบˆเบฐเบ™เบณเบ—เบฑเบ‡ 2 เบขเปˆเบฒเบ‡เบ™เบฑเป‰เบ™เบกเบฒเบ—เบณเบเบฒเบ™ optimized เปเบฅเบฐ generate เบญเบญเบเบกเบฒเป€เบ›เบฑเบ™ machine code.
optimizing compiler


JavaScript เป€เบ›เบฑเบ™ dynamic type language, เปเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ type เบ‚เบญเบ‡ data เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ. เบ–เป‰เบฒเบซเบฒเบ JS Engine เบ•เป‰เบญเบ‡เบเบงเบ”เบชเบญเบš data type เบขเบนเปˆเบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ(เปเบ•เปˆเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เปƒเบŠเป‰ data type เปเบกเปˆเบ™เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ-เปเบ™เบฐเบ™เบณเป„เบ›เป€เบšเบดเปˆเบ‡ TypeScript).

เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™ interpret code. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ run byte code, machine code เบ—เบตเปˆเบ–เบทเบ optimized เปเบฅเป‰เบงเบˆเบฐ handle เบชเบฐเป€เบžเบฒเบฐ case เบ—เบตเปˆ engine เป€เบ„เบตเบเป€เบซเบฑเบ™เบกเบฒเบเปˆเบญเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ–เป‰เบฒเป€เบฎเบปเบฒเปƒเบŠเป‰ code เบšเบฒเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบกเบฑเบ™เบเบฒเบ™ return data type เบ”เบฝเบงเบเบฑเบ™เบŠเป‰เบณเป†, machine code เบ—เบตเปˆเบ–เบทเบ optimized เปเบฅเป‰เบงเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เบณเบกเบฒเปƒเบŠเป‰เปƒเปเปˆเป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเป„เบ”เบ”เป‰เบ•เบทเปˆเบกเบญเบตเบ. เปเบ•เปˆเป€เบ–เบดเบ‡เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ JavaScript เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเปƒเบซเป‰เป€เบ›เบฑเบ™ dynamic type เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบšเบฒเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบงเปˆเบฒ code เบšเบฒเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบ„เบทเบเบฑเบ™เปเบ•เปˆเบกเบฑเบ™ return เบ„เบปเบ™เบฅเบฐ data type เบญเบญเบเบกเบฒ. เบ–เป‰เบฒเป€เบเบตเบ”เป€เบซเบ”เบเบฒเบ™เปเบšเบšเบ™เบตเป‰เบ‚เบถเป‰เบ™ machine code เบˆเบฐเบ—เบณเบเบฒเบ™ de-optimized เปเบฅเบฐ engine เบˆเบฐเบ—เบณเบเบฒเบ™เบเบฑเบšเป„เบ› interpreting เป€เบžเบทเปˆเบญ generate byte code เปƒเปเปˆ.

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบšเบฒเบ‡ function เป€เบ›เบฑเบ™เบˆเบณเบ™เบงเบ™ 100 เบ„เบฑเป‰เบ‡ เปเบฅเบฐ เบกเบฑเบ™เบˆเบฐ return เบ„เปˆเบฒเป€เบ”เบตเบกเบกเบฒเบชเบฐเป€เปเบต, เบกเบฑเบ™เบˆเบฐเบ–เบทเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ—เบณเบเบฒเบ™ return เบ„เปˆเบฒเป€เบ”เบตเบกเบกเบฒเบ–เป‰เบฒเบซเบฒเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบฎเบญเบšเบ—เบต 101.

เบ–เป‰เบฒเบเบฑเบ‡เบ‡เบปเบ‡เบกเบฒเป€เบšเบดเปˆเบ‡เบญเบตเบเบ•เบปเบงเบขเปˆเบฒเบ‡: เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบฎเบปเบฒเบกเบต sum function เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ™ arguments เบ—เบตเปˆเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ•เบปเบงเป€เบฅเบเบ—เบธเบเบ„เบฑเป‰เบ‡:
sum function
เปƒเบ™ function เบ”เป‰เบฒเบ™เป€เบ—เบดเบ‡เบกเบฑเบ™เบˆเบฐ return เบ„เปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบเบญเบญเบเบกเบฒเบ„เบท 3, เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ›เบ—เบตเปˆเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบกเบฑเบ™เบˆเบฐเบ–เบทเบงเปˆเบฒเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เป€เบญเบตเป‰เบ™เปƒเบŠเป‰เบญเบตเบเบ„เบฑเป‰เบ‡เบ”เป‰เบงเบ arguments เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเป€เบฅเบ 2 เบ„เปˆเบฒ.

เบ–เป‰เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™เบเปเปˆเบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบปเป‰เบ™เบซเบฒเปเบšเบš dynamic เปเบฅเบฐ เบชเบฒเบกเบฒเบ” re-use machine code เบ—เบตเปˆเบ–เบทเบ optimized เป„เบ”เป‰เป€เบฅเบตเบ. เปเบ•เปˆเบ–เป‰เบฒเบšเปเปˆเป€เบ›เบฑเบ™เปเบšเบšเบ™เบฑเป‰เบ™ เบกเบฑเบ™เบเปเปˆเบˆเบฐ revert เป„เบ›เป€เบ›เบฑเบ™ original byte code เบ‚เบญเบ‡ machine code เบ—เบตเปˆเบ–เบทเบ optimized.

เบ•เบปเบงเบขเปˆเบฒเบ‡: เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ›เบ—เบตเปˆเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เปƒเบŠเป‰เป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เบ„เปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™ string เปเบ—เบ™เบ•เบปเบงเป€เบฅเบ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ JavaScript เป€เบ›เบฑเบ™ dynamic type เป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰เป„เบ”เป‰เป‚เบ”เบเบ—เบตเปˆเบšเปเปˆเบกเบต Error เปƒเบ”เป†.
pass string to ssum function
เปเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบฅเบ 2 เบˆเบฐเบ–เบทเบเบšเบตเบšเปƒเบซเป‰เป€เบ›เบฑเบ™ string เปเบฅเบฐ function เบˆเบฐ return เบ„เปˆเบฒ "12" เบญเบญเบเบกเบฒเปเบ—เบ™. เบ—เบตเปˆเป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰เบเปเปˆเบเป‰เบญเบ™เบกเบฑเบ™เบเบฑเบšเป„เบ› execute byte code เบ—เบตเปˆเบ–เบทเบ interpreted เปเบฅเป‰เบง เปเบฅเบฐ เบ—เบณเบเบฒเบ™ update type เบเบฑเบšเป„เบ›.


เบญเป‰เบฒเบ‡เบญเบตเบ‡: ๐Ÿš€โš™๏ธ JavaScript Visualized: the JavaScript Engine

Top comments (0)