美文网首页
JavaScript 函数的length属性

JavaScript 函数的length属性

作者: O无为学长O | 来源:发表于2020-12-21 19:32 被阅读0次

函数 的 length 指的是函数声明时,形参的个数

function fn1 () {} // length 为 0
function fn1 (a) {} // length 为 1
function fn1 (a,b,c) {} // length 为 3

本来这是一个很好理解的知识点,但ES6之后,就稍微变得有一些绕了,原因在于 ES6 更新了一个新特性,让函数可以给形参设置默认值

// 这种写法在 ES6 之前是不允许的
function fn1 (a,b = 10) {}

有了这一新特性之后,length 的解释就要修改成这样: length 的值是指函数的第一个具有默认值的形参之前的形参的个数。
是不是有念绕口令的感觉?
举例说明应该就比较好理解了

function fn1 (a,b) {} // 因为 a, b 都没有默认值,length 的值为 2
function fn2 (a=1,b) {} // 因为 a 为“第一个具有默认值的形参”,而a的前面没有其它形参了,所以 length 为 0
function fn3 (a,b=1,c) {} // b为 “第一个具有默认值的形参”,前面还有a, length 值为 1
function fn4 (a,b,c=1) {} // length 值为 2
function fn5 (a,b=1,c,d=2) {} // length 值为 1 (第一个具有默认值的形参为b,前面只有a)

看了上面的例子,是不是好理解很多了呢?
需要注意的是下面这个例子

function fn1 (a,...args) {} // length 值为 1
// ...args 是有默认值的,默认为一个空数组。

另外,JS中几个内置的构造函数,也是函数,所以也是有length属性的,但值各不相同,以下是我测试得到的结果

Array.length  // 1
Number.length // 1
Function.length // 1
String.length // 1
Boolean.length // 1
Object.length // 1
RegExp.length // 2
Date.length // 7

相关文章

  • 函数的属性和方法

    函数是对象,所以函数也有属性和方法。每个函数都包含两个属性:length和prototype。其中,length属...

  • 2019-02-19

    函数的扩展 1、函数参数的默认值 函数的length属性 指定了默认值以后,函数的length属性将返回没有指定默...

  • js:函数属性、arguments

    函数属性: foo.name 函数名字,foo.length函数形参个数,arguments.length函数实参...

  • js数组length的属性

    JavaScript 数组有一个length属性,能够获取数组的长度,这是我们平时的用法。但是length属性并不...

  • 4.函数的扩展

    函数参数的默认值 解构赋值默认值的使用: 函数的length属性:指定了默认值以后,函数的length属性,将返回...

  • 字符串对象-String

    1、length属性 在JavaScript中,对于字符串来说,要掌握的属性就只有一个,那就是length属性。我...

  • 函数属性和方法

    我们大家都知道,一个函数它有属性和方法,每个函数都包含两个属性:length和prototype。 length属...

  • 函数的扩展

    注意: 函数的 length 属性 指定了默认值后,length属性将失真。 作用域 var x = 1; fun...

  • js数组方法全面总结

    创建数组 使用Array构造函数 使用数组字面量表示法 数组属性 length表示数组的长度 length属性并不...

  • function 函数类型之prototype

    prototype 和 length 函数的属性和方法 ECMAScript 中函数是对象,因此也有属性和方法。每...

网友评论

      本文标题:JavaScript 函数的length属性

      本文链接:https://www.haomeiwen.com/subject/axnsnktx.html