美文网首页js css html
2022-05-09 JavaScript基础学习 - 8

2022-05-09 JavaScript基础学习 - 8

作者: 网恋被骗二块二 | 来源:发表于2022-05-12 19:06 被阅读0次

    第十章 函数

    每个函数都是Function类型的实例,而Function也有属性和方法,跟其他引用类型一样。因为函数是对象,所以函数名就是指向函数对象的指针,而且不一定与函数本身紧密绑定。

    使用

    1. 直接定义(有变量提升)
    function funcName(args) {}
    
    funcName(args)
    
    1. 字面量赋值(没有变量提升,包括 var)
    let func = function (args) {}
    
    func(args)
    
    1. 箭头函数
    let func = (args) => {}
    
    func(args)
    
    1. 使用 Function 构造函数创建(不推荐)

    箭头函数的使用和正常函数差不多,胜在语法更简洁,但是箭头函数也有缺点,不能使用arguments、super和new.target,没有prototype,箭头函数的this指向也和普通函数的this指向不同。

    所有函数默认自带一个只读属性:name,一般是返回函数名。没有名称则返回空字符串;如果是用构造函数创建的则返回 anonymous;如果函数是一个获取函数、设置函数,或者使用bind()实例化,那么会加上 bound 前缀

    参数

    ECMAScript函数的参数跟大多数其他语言不同。ECMAScript函数既不关心传入的参数个数,也不关心这些参数的数据类型。定义函数时要接收两个参数,并不意味着调用时就传两个参数。你可以传一个、三个, 甚至一个也不传,解释器都不会报错。
    之所以会这样,主要是因为ECMAScript函数的参数在内部表现为一个 数组。函数被调用时总会接收一个数组,但函数并不关心这个数组中包含什么。如果数组中什么也没有,那没问题;如果数组的元素超出了要求,那也没问题。事实上,在使用function关键字定义(非箭头)函数时,可以在函数内部访问arguments对象,从中取得传进来的每个参数值。

    这就是函数中自带的对象arguments,arguments对象是一个类数组对象,可以通过 [] 来访问参数,以及使用 length 获取长度

    覆盖

    重复命名函数,后面的会覆盖前面的函数的功能

    function add(n1, n2) {
      return n1 + n2
    }
    function add(n1, n2) {
      return n1 + n1
    }
    add(3, 5) // 6
    

    默认参数

    es6以后,可以直接在参数后赋值默认值,而不用在函数内部判断该参数是否等于 undefined

    运算符...

    参数的传递可以使用...,实参中使用表示将目标对象拆分成多个传递给函数,形参中使用表示将多个参数收集到该参数中

    相关文章

      网友评论

        本文标题:2022-05-09 JavaScript基础学习 - 8

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