ES6 箭头函数 双冒号符号

2023-07-11 09:09:1305:54 1523
所属专辑:javascript面试题
声音简介

1、箭头函数
ES6 允许使用“箭头”(=>)定义函数。
var cat= function (name) { return "tom";};    var cat = name => "tom";
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。 var cat = (name) => "tom";
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来    var cat = (name) => {return  "tom"};

箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

上面三点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。
由于箭头函数使得this从“动态”变成“静态”,下面两个场合不应该使用箭头函数。
第一个场合是定义函数的方法,且该方法内部包括this。
const cat = {
  lives: 9,
  jumps: () => {
    this.lives--;
  }
}   指向的是全局的变量    

第二个场合是需要动态this的时候,也不应使用箭头函数。
button.addEventListener('click', () => {
       this.classList.toggle('on');
});  指向的是全局的变量    
 
2、双冒号运算符

箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法(call、apply、bind)。
但是,箭头函数并不适用于所有场合,所以现在有一个提案,提出了“函数绑定”(function bind)运算符,用来取代call、apply、bind调用。

函数绑定运算符是并排的两个冒号(::),双冒号左边是一个对象,右边是一个函数。
该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。
run.bind(cat);
cat::run;
// 等同于

cat::run(...arguments);
// 等同于
run.apply(cat, arguments);

如果双冒号左边为空,右边是一个对象的方法,则等于将该方法绑定在该对象上面
let log = ::console.log;
// 等同于
var log = console.log.bind(console);

如果双冒号运算符的运算结果,还是一个对象,就可以采用链式写法。

















用户评论

表情0/300

CC小骋

很好的节目,更新在快一点,频繁一点就好了

摔了不痛 回复 @CC小骋

没有办法,程序汪加班多,没时间更新

音频列表
猜你喜欢
箭头Radio

欢迎收听《ArrowHeadRadio/箭头电台》这里是NFL堪萨斯城酋长队的球迷电台!我们将为您带来球队的最新资讯:精彩的比赛回顾、解读赛场信息,球队文化的...

by:英俊的Pickie

运用箭头法,从零开始学唱歌

想唱歌,三大难题——不会唱,不敢唱,不知道唱什么。学唱歌,三大排斥——没时间,没经济,听不懂。我不想成为歌唱家,不想看懂五线谱,不想学会海豚音。我只想在...

by:懂我星球

函数导数剖析

大部分人都因差那么一点点,就因这一点点足以让你输得一败涂地!!不要用起点来定义自己,许多事不是你说了才有意义,而是你做完了才有价值!!

by:高中数学章节知识解读

初中整式函数的传说

数学是一种充满诗意和神秘的思维结构;通过我的数学视频,你会发现数学新奇的一面;你会觉得思考是文化的一部分!

by:有梦想的丹老师

Excel财务函数公式大全

加群:555093020;免费领取2018最新版财务EXCEL会计做账实操资料。财务EXCEL课程内容是以EXCEL做账为主线来展开阐述的,包括电子表格Exc...

by:会计学堂

Java函数式编程Lambda、Stream流全套

本视频主要面向的群体是:想入门和深入掌握java函数式编程的同学学完本课程能够收获:java函数编程的基础知识,StreamAPI,实际应用,以及相关原...

by:黑马程序员

Excel函数,财务软件Excel教程

添加微信:zxwx1118,即可免费领取函数查询手册,财务做账模板,函数表格,680个带公式的EXCEL模板,会计科目记账凭证表格等干货满满的实操资料包,帮你...

by:中欣网校