JavaScript内置Number对象的length属性有什么作用
为什么JavaScript内置对象
Number存在length属性? 首先搞清楚本质:Number不是普通对象,它是JavaScript的内置构造函数,本质上就是个函数。
JS里所有函数,不管是开发者自定义的还是运行时内置的,天生就带length属性,这个属性的作用非常明确:统计函数定义时,第一个带默认值的参数之前,所有无默认值的形参数量,剩余参数(...args)不算在内。
拿几个自定义函数举例子就能看懂规则:
// 两个无默认值的形参,length为2 function demo1(a, b) {} console.log(demo1.length) // 2 // 第一个带默认值的参数是b,前面只有a符合统计规则,length为1 function demo2(a, b = 1, c) {} console.log(demo2.length) // 1 // 剩余参数不计入统计,length为2 function demo3(a, b, ...rest) {} console.log(demo3.length) // 2
回到Number本身,它作为构造函数/类型转换函数,定义时就只接收1个入参——也就是要被转成数字类型的值,比如我们平时写的Number('123')、Number(false),都是只传这一个参数。它的形参列表里刚好只有1个符合统计规则的形参,所以length值为1,完全符合函数的通用规则,不是什么专门给Number设计的特殊属性。
你之前写的测试代码运行结果也能验证这点:
var n = Number; n;
控制台打印的静态成员列表里,除了各种数值常量、静态方法之外的length: 1,就是函数自带的默认属性。
这个规则对所有内置函数都生效,随便举几个例子:
Object.length值为1String.length值为1parseInt.length值为2Math.max.length值为2
内容的提问来源于stack exchange,提问作者redchicken
相关产品推荐
相关产品推荐

