普通函数在es5中就有了,箭头函数是es6中出现的函数形式,当然也可以继续用es5写法。

普通函数大家知道:

形式基本一致

来看看箭头函数

开发时根据实际情况可以省略一些东西

单条处理可以省略return和{大括号}

单个参数可以省略(小括号)

箭头函数不能作为构造函数 不能new。会报错

箭头函数不绑定arguments,但是可使用...rest参数

这是普通函数arguments,可以使用

这是箭头函数的,用了会报错。

但是可以这么用,不过结果和arguments有所不同。

arguments的一般使用场景是:允许传入3个参数,中间一个参数是可选。如果只传1个参就是参数1用,传入2个参就是参数1和参数3用...

rest参数使用效果:

rest默认是[],多余的传参会加入数组

这里我们使用arguments来模拟rest效果看看:

2种函数的this代表不一样:

f1是箭头函数,this代表上层对象,若无自定义上层,则代表window。

f2是普通函数,this代表当前对象。

箭头函数的call()或apply()函数,不会影响到this的代表对象:

b,c,d均是普通函数,

b中的f是箭头函数,所以内部的this代表上层obj,值为11

c中的f是箭头函数,调用f的call()时不会影响内部的this,依然代表obj,值为11

d中的f是普通函数,this代表window,但是因为调用了f的call(m)变成了m,值为21

这里我们来提一下call函数:

call函数是每个函数都有的方法,用于改变普通函数内部的this指向的。

箭头函数没有原型属性:

prototype是普通函数用于获取原型对象的。

总结:

箭头函数内的this指向上层对象,bind()、call()、apply()均无法改变指向。

普通函数内的this执行调用其函数的对象。

【js】箭头函数与普通函数的异同的更多相关文章

  1. js中 函数声明/函数表达式/匿名函数/箭头函数/立即执行函数

    函数声明: function add(a, b) { // ... } 1.顾名思义,声明一个函数, 用关键字 “function” 来告诉,这是一个函数. 2.任何地方,想用就可以拿过来使用 函数表 ...

  2. js(=>) 箭头函数 详细解说 案例大全

    ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: fu ...

  3. js 箭头函数

    箭头函数 ES6标准新增了一种新的函数:Arrow Function(箭头函数). x => x * x相当于: function (x) { return x * x; }箭头函数相当于匿名函 ...

  4. JS中函数声明与函数表达式的异同

    相同点 注:函数声明和函数表达式的相同点包括但不限于以下几点 函数是一个值,所以和其他值一样,函数也可以进行被输出.被赋值.作为参数传给其他函数等相关操作,不管函数是以什么方式被定义的,当然和其他值的 ...

  5. js箭头函数

    ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头 x =>x*x 相当于: function(x) { ...

  6. js中this,箭头函数和普通函数

    四种基本用法 1. 一般方法中,this代指全局对象 window 2. 作为对象方法调用,this代指当前对象 3. 作为构造函数调用,this 指代new 出的对象 function test() ...

  7. ES6箭头函数(箭头函数和普通函数的区别)

    箭头函数 一个参数 // 只有一个参数 // f : 函数名称 // v : 函数参数 // v+v : 函数内容 let f=v=> v+v console.log(f(10)) //20 两 ...

  8. ES6中的箭头函数与普通函数的区别

    箭头函数与普通函数的区别 1.语法上更加简洁.清晰 基本语法: // 关于箭头函数的参数 // 如果箭头函数没有参数,直接写一个括号即可 let fun1 = () => { console.l ...

  9. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

随机推荐

  1. Cassandra最小化安装

    Cassandra最小化安装 环境 CentOS 7.2 64位 IP_address:172.27.0.8 安装包装备 [root@master ~]# ll /usr/local/src tota ...

  2. 香茅油:不只是驱虫剂 new

    如果您是芳香疗法的爱好者,香茅油对您来说可能并不陌生.香茅油还经常被添加到各种个人护理和清洁产品中,给人们带来多种益处. 什么是香茅油? 香茅精油是从香茅属 (Cymbopogon ) 植物家族中提取 ...

  3. awk命令使用经验

    1.为什么要使用awk 举一个简单的例子,作为一个java开发人员,在查看日志服务器(即时保存所有线上环境的日志)上的日志的时候,由于部署了服务的服务器不止一台,当想要查找某一个特定信息的时候,由于不 ...

  4. RedHat Enterprise Linux 6.4使用网易Centos 6 的yum源

    1.首先到http://mirrors.163.com/centos下载软件包 x86 地址:http://mirrors.163.com/centos/6/os/i386/Packages/ x86 ...

  5. spring-boot logback配置

    接着上篇的代码,日志在不同环境下的配置也不一样,所以要分开配置,主要使用maven的profile 1.1 在pom.xml中添加 <profiles> <profile> & ...

  6. RN如何基于js代码手动打一个main.jsbundle

    react-native bundle --entry-file index.js --bundle-output ./ios/bundle/main.jsbundle --platform ios ...

  7. MySQL 允许局域网内其他网段主机访问本地MySql数据库

    Mac下和Windows下均适合

  8. 【Vagrant】-NO.130.Vagrant.1 -【Vagrant】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  9. 简单翻书效果,css3 3d视角perspective

    perspective越大 视角越远.看起来越小,,越小越近 就越大

  10. Sublime 个人配置

    Sublime 个人配置 用的faltland主题,之后还加了一些自己喜欢的东西. 效果图如下: { "always_show_minimap_viewport": true, & ...