结合以下注释理解代码,有空再分步骤讲解

// 执行正常 function 方法名() 会直接将函数提升到顶部所以此步成功
normalFun(2);
// 执行失败 因var会将arrowFun变量提升但赋值仍在原本行无法在赋值前调用
// arrowfun();
// 箭头函数
var arrowFun = ()=>{console.log(this)}
// 正常函数
function normalFun(a){this.a = a; console.log(this)}
// 定义对象cat有两个属性分别保存箭头函数和正常函数所定义的函数
var cat = {arrowfun: arrowFun,normalfun: normalFun
}
// 箭头函数所使用的this不会因调用域不同发生改变(会指向创建时作用域的this)
arrowFun(); // this =  window
cat.arrowfun()  // this = window
// 正常函数所使用this会跟随调用域不同发生改变
normalFun(1); // this = window
cat.normalfun(1); // this = cat
// 执行正常且this指针将指向自身
// ❌使用new以后会变成一个对象无法以函数方式调用,newNormal()
var newNormal = new normalFun(1);
console.log(newNormal.a);
// 下行代码报错:Uncaught ReferenceError: arrowfun is not defined
// 因箭头函数无法使用new方法调用因箭头函数无构造方法
// var newArrow = new arrowfun();
// 总结:
// 1. 定义方式不同 // 箭头函数 ()=>{}// 正常函数 function name(){}
// 2. this指向不同 // 箭头函数所使用的this不会因调用域不同发生改变(会指向创建时作用域的this)// 正常函数所使用this会跟随调用域不同发生改变
// 3. 构造函数不同// 箭头函数无构造函数无法使用new方式// 正常函数有构造函数可以使用new方式但new后不再是函数而是对象
// 4. 变量提升不同// 箭头函数因会使用var来保存,所以会先将var变量名提升但赋值不会提升,所以无法在赋值前调用// 正常函数会直接提升到最顶部,所以可以在声明前调用

JavaScript 箭头函数与function函数区别相关推荐

  1. 箭头函数与function的区别

    1.箭头函数与function定义函数的写法不同 //function function fn(a, b){return a + b; } //arrow function var foo = (a, ...

  2. ES6---箭头函数()={} 与function的区别(转载)

    1.箭头函数与function定义函数的写法: //function function fn(a, b){return a + b; } //arrow function var foo = (a, ...

  3. MySQL函数(CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型)

    MySQL函数 /* 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 区别: 存储过程: ...

  4. html 定义函数调用函数,HTML function函数怎么定义和调用?

    HTML function函数怎么定义和调用实例: function myFunction() { alert("Hello World!"); } Try it 扩展资料 1.函 ...

  5. 第十节 javascript之第四节 函数

    本文来自赵庆贝博客 一.函数:函数是一段命名的代码块,当调用函数时,函数里的代码块是做为一个整体一起被执行的. 1.定义声明函数: A.书写位置:一般情况下,写在<head>与</h ...

  6. MySQL---- 自定义函数(FUNCTION)

    MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数. 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和过程式语句组成的代码片段,并且 ...

  7. JavaScript【流程控制】【数组】【函数】【函数作用域】经典!!

    表达式和语句 表达式 一个表达式可以产生一个值,有可能是运算.函数调用.有可能是字面量.表达式可以放在任何需要值的地方. 语句 语句可以理解为一个行为,循环语句和判断语句就是典型的语句.一个程序有很多 ...

  8. Oracle进阶(八)自定义函数(Function)

    1.函数语法 1.1 创建语法 --创建函数 CREATE OR REPLACE FUNCTION 函数名(参数1 模式 参数类型)RETURN 返回值类型 AS变量1 变量类型;变量2 变量类型; ...

  9. Python零基础速成班-第5讲-Python函数,Function和Lambda基础

    Python零基础速成班-第5讲-Python函数,Function和Lambda基础 学习目标 Function函数 Lambda Function函数 课后作业(4必做) 友情提示:将下文中代码拷 ...

最新文章

  1. 如何修复“ sudo:不存在tty且未指定AskPass程序”错误?
  2. angular 兼容ie7 bootstrap2兼容ie6
  3. 表面粗糙度的基本评定参数是_表面粗糙度的概念,表面粗糙度形成因素,表面粗糙度评定依据...
  4. dnSpy 强大的.Net反编译软件
  5. codeforces 116A-C语言解题报告
  6. opencv8-图像模糊
  7. 数据结构 之 并查集(Disjoint Set)
  8. matlab工作方向,MATLAB-CST联合仿真之四:方向图分析与综合
  9. 新版仿山楂岛留言PHP源码+短视频/公众号吸粉引流
  10. 40163 php,【PHP】微信支付JsApi 40163错误,_PHP_ 少侠科技
  11. 葫芦娃手游服务器未响应,葫芦娃混服S453无动于衷开服时间表_葫芦娃新区开服预告_第一手游网手游开服表...
  12. Matlab--函数与子函数
  13. 有道智选-网易效果推广
  14. python熊猫图案_熊猫Python数据分析库和SQL教会了我如何取平均数
  15. 通读c++ primer
  16. 【转载】利用ENVI直接建立掩膜去除背景Inf值或NaN值
  17. 显微镜常用技术参数和专属名词
  18. 瑞星误删用友服务文件ServerNT.exe
  19. 考研英语善变的more than:后加词性不同,意思有变
  20. 计算机课图画的变形教案,《义务教育课程标准实验教科书美术(四年级上册)》提示及教学要点...

热门文章

  1. 宝塔面板服务器ip地址修改_网站服务器日常安全防护措施(宝塔面板新手网站教程)...
  2. VS code 设置Fortran环境
  3. 处理 wait millis 60009, active 50 ,maxactive 200 异常 过程
  4. 分布式基石|最难 paxos 和最易 raft?
  5. vue生命周期钩子函数为什么不能使用箭头函数
  6. 正点原子 在ADC实验中添加USMART,通过串口查看电压值
  7. No_16_0324 Java基础学习第二十三天
  8. 使用注解+反射实现List与树形结构的相互转换
  9. photoshop-2023-基础入门笔记
  10. 服务器掉线问题和解决方法