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

Sentry image

See why 4M developers consider Sentry, โ€œnot bad.โ€

Fixing code doesnโ€™t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

๐Ÿ‘‹ Kindness is contagious

Please leave a โค๏ธ or a friendly comment on this post if you found it helpful!

Okay