0x00 箭头函数

基本语法:

ES6允许使用“箭头”(=>)定义函数

var f = a = > a

//等同于
var f = function(a){
return a;
}

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

//无形参
var f = () => 5;
// 等同于
var f = function () { return 5 }; //多个形参
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};

使用箭头函数注意点:

箭头函数有几个使用注意点。

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

  

  var name = '张三';
var person = {
name:'小马哥',
age:18,  
fav:function(){
console.log(this)
console.log(this.name)
}
} person.fav();

我们发现,打印的结果为

此时this指向的是使用它的对象,也就是person对象

 var person2 = {
name:'小马哥',
age:18,
fav: ()=>{
// 当前this指向了定义时所在的对象(window)
console.log(this);
}
} person2.fav();

打印的结果:

使用箭头函数,它表示定义时所在的对象window。

再看一个例子吧!

function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
} var id = 21; foo.call({ id: 42 });
// id: 42

上面代码中,setTimeout的参数是一个箭头函数,这个箭头函数的定义生效是在foo函数生成时,而它的真正执行要等到 100 毫秒后。如果是普通函数,执行时this应该指向全局对象window,这时应该输出21。但是,箭头函数导致this总是指向函数定义生效时所在的对象(本例是{id: 42}),所以输出的是42

(2)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

         var person3 = {
name:'小马哥',
age:18,
fav: ()=>{
console.log(argument);
}
} person3.fav('把妹','把爷');

报出如下❎:

最新文章

  1. Linux下创建新用户
  2. C#winform调用外部程序,等待外部程序执行完毕才执行下面代码
  3. chrome表单自动填充去掉input黄色背景解决方案
  4. 计划任务命令crontab、at
  5. docker镜像与仓库
  6. Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
  7. Oralce 导出脚本命令,定时执行
  8. iis 10 ftp 被动模式配置
  9. hook键盘驱动中的分发函数实现键盘输入数据的拦截
  10. Python之进程
  11. EditTextUtil 监听输入字数
  12. 利用Openssh后门 劫持root密码
  13. grub.conf解析
  14. FortiGate 路由
  15. WPF 依赖属性&附加属性
  16. curl的概念及相关工具下载
  17. 【转载】 5G+边缘计算,着眼可见的未来 【边缘计算】
  18. ROS学习手记 - 6 使用ROS中的工具:rqt_console & roslaunch & rosed
  19. 阿里云服务器搭建SVN
  20. mysql 数据表的引擎 MyISAM 和 InnoDB

热门文章

  1. 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象
  2. C++ 在继承中使用virtual
  3. 让你变成ASP木马高手
  4. poj_3168 平面扫描
  5. c++ 重载、重写、重定义(隐藏)
  6. c# 给button添加不规则的图片以及用pictureBox替代button响应点击事件
  7. android 点九工具介绍
  8. 【转载】国外程序员整理的Java资源大全
  9. postgresql----Btree索引
  10. javase---Java反射操作