我不知道的 V8
1 + "2" 为什么等于 "12":类型转换的底层逻辑
1 + "2" 的结果是 "12" 而不是 3——大多数开发者知道这个结果,背后的理由通常是"JavaScript 会把数字转成字符串"。但这个说法不够精确。为什么是数字转成字符串,而不是字符串转成数字?+ 运算符究竟在什么时候做字符串拼接,什么时候做数字加法?ECMAScri…
V8, 字节码
// 共 3 篇文章
1 + "2" 的结果是 "12" 而不是 3——大多数开发者知道这个结果,背后的理由通常是"JavaScript 会把数字转成字符串"。但这个说法不够精确。为什么是数字转成字符串,而不是字符串转成数字?+ 运算符究竟在什么时候做字符串拼接,什么时候做数字加法?ECMAScri…
函数调用在 JavaScript 里无处不在,但"调用一个函数"在 V8 内部并不简单。每次调用都要创建执行上下文、分配栈帧、传递参数、管理返回地址——这些开销在热点代码中积累,会变成性能瓶颈。TurboFan 用函数内联(Function Inlining)来消除这个开销。这…
在 JavaScript 里,函数既是对象(typeof fn === 'function',但 fn instanceof Object === true),又是可执行的代码块。这个"双重身份"不是语言层面的比喻,而是 V8 内部有具体实现的机制。一个普通对象写了 foo()…