普通函数vs箭头函数vs匿名函数

前言

最近在复习前端知识点的时候,发现js有很多概念都模糊不清,比如说普通函数,箭头函数,匿名函数等各种问题,所以今天整理如下。

普通函数

JS中我们广泛使用的就是各种函数,通常普通函数有3种声明方式:直接声明,函数表达式声明,构造函数声明。

直接声明

这是最常见的一种声明方式。

    // 1.直接声明
    function f() {
        console.log("这是直接声明的")
    }
    //函数调用
    f();

函数表达式声明

    //2.函数表达式
    var temp = function () {
        console.log("这是函数表达式声明")
    }
    // 函数调用
    temp();

构造函数声明

    //3.构造函数调用
    var  variable = new Function('name','alert("hello,"+name)');     
     //最末尾的是函数体,其前面的都是参数
    //函数调用
    variable('world');

匿名函数

匿名函数顾名思义其实就是没有名字的函数。匿名函数的声明也有两种方式

直接声明

    window.onload = function () {
        console.log("匿名函数直接声明")
    }

通过匿名函数表达式

    //匿名函数,表达式声明
    var name = function () {
        console.log("这种声明和普通函数的声明一样")
    }

匿名函数vs普通函数

匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后

箭头函数

箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。(摘抄在MDN)

多个参数的箭头函数

(参数1, 参数2, …, 参数N) => { 函数声明 }

等同于

(参数1, 参数2, …, 参数N) =>{ return 表达式; }

一个参数的箭头函数(括号可省略)

(单一参数) => {函数声明}
单一参数 => {函数声明}

没有参数的箭头函数(要有括号)

() => {函数声明}

不绑定this

通过 call() 或 apply() 方法调用一个函数时,只能传递参数

不绑定arguments

不能使用new操作符

箭头函数不能用作构造器,所以不能使用new操作符
在这里插入图片描述

没有prototype属性

在这里插入图片描述

yield 关键字

yield 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。因此,箭头函数不能用作生成器。

习题练习

在这里插入图片描述
在这里插入图片描述
这种声明方法,就是用函数表达式来声明,本质上还是 var f =function(); 不过给了这个匿名函数一个名字一样,但其实g就类似于f.name 变成了f的一个属性 没有什么作用,所以g()的时候,就想要去查g()这个函数,但是并没有g()函数(只有声明的时候一个匿名函数) 所以会报error ,而g的时候,是没有找到定义过的这个变量 所以undefined。

定义的这个属性name 只能在匿名函数内部进行访问,和g,g()没有关系
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值