Lirx-Xin / LirxdeBlog

blog记录
0 stars 0 forks source link

关于js函数对象的length属性 #17

Open Lirx-Xin opened 2 years ago

Lirx-Xin commented 2 years ago

js函数的length属性定义:length 属性指明函数的形参个数。

但是在实际使用时,可以发现并不知定义的这么简单

// 例1:
var fn1 = function(x, y) {}
fn1.length // 2 表示有两个参数
// 例2:
var fn2 = function(x, y=1) {}
fn2.length // 1
// 例3:
var fn3 = function(x=1, y) {}
fn3.length // 0

从三个例子可以看到,这个属性有规律,但不多。 社区中对此也有说明

length 是函数对象的一个属性值,指该函数期望传入的参数数量,即形参的个数。 形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的参数个数。 与之对比的是,arguments.length 是函数被调用时实际传参的个数。