You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Number函数与new运算符的交互机制探究

关于JavaScript内置函数Number的规范解析

刚好研究过这块,我来给你理清楚JavaScript里内置函数Number的具体执行逻辑——选它当例子是因为这类逻辑在ECMAScript规范里的其他不少函数里都通用。

根据ECMAScript规范的20.1.1.1 Number ( value )条目,当调用Number并传入参数value时,会执行以下步骤:

  1. 若未传入任何参数,令n为+0;
  2. 否则,令n为? ToNumber(value);
  3. 若NewTarget为undefined,则返回n;
  4. 令O为? OrdinaryCreateFromConstructor(NewTarget, "%Number.prototype%", « [[NumberData]] »);
  5. 设定O的[[NumberData]]内部槽为n;
  6. 返回O。

简单拆解下逻辑:

  • 当你把Number当作普通函数调用(比如Number('123')),NewTarget是undefined,所以直接返回转换后的原始数值;
  • 当你用new关键字把它当作构造函数调用(比如new Number('123')),就会创建一个Number实例对象,内部槽存着对应的数值。

这种“既可以作为普通函数做类型转换,又可以作为构造函数创建包装对象”的模式,在String、Boolean这些内置函数里也是完全一致的逻辑哦。

内容的提问来源于stack exchange,提问作者MaximPro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:22:38