箭头函数

箭头函数中的参数:无参,一个参数,多参
无参,setTimeout(handler:()=>{},timeout:20);
一个参数,()可以省略
setTimeout(handler:(a)=>{},timeout:20);
多参
setTimeout(handler:(a,b,c,d)=>{},timeout:30);

箭头函数中的代码
1.当箭头函数函数体内有且只有一条语句的时候{}可以省略
eg:let a=function(){
consloe.log(‘sss’);
}
a();
变换:let a=b=>consloe.log(‘sss’+b);
a(b:123);参数的名字为b

2.当箭头函数中有且只有一条语句且这条语句的关键词是return的时候,那么return关键词可以省略,{}也可以省略
let a=b=>b++;//let a=b=>{return b++;}//++在后,先返回后加值
console.log(a(b:1));//1

eg:[1,2],[3,4].map(([a,b])=>a+b);
:[1,2],[3,4].map(function([a,b]){return a+b;})
map生成一个新的数组,[1,2]=>a:1,b:2map[3]
[3,4]=>a:3,b:4=>map[3,7]

箭头函数当做实参进行传递
function f(a,b){
a();
console.log(b);
}
f(a:()=>{
consloe.log(‘aaaa’);
},b:20);

箭头函数中的this
let function (){
console.log(this);//window
}
a();//node中global
let b=()=>{
consloe.log(this)//window
}
b();//node中this->{}//不能使用,无意义,箭头函数中不能使用this,需要依附父类

事件函数中的this
普通指向调用的元素
普通的指向事件触发元素
箭头函数的事件中指向定义箭头函数的元素
箭头函数指向window

ONE:
function person(){
this.a=function(){
return function(){
console.log(this);//global
}
}
}

let p=new person();//对象的实例化
p.a();//调用对象中的方法
p.a()();

let/const 变量名(此为引用名)=new

TWO:
function person(){
this.a=function(){
return ()=>{
console.log(this);//person
}
}
}
THREE:
function person(){
this.a=()=>{
return function(){
console.log(this);//global
}
}
}
FOUR:
function person(){
this.a=()=>{
return ()=>{
console.log(this);//person
}
}
}
this的指向由return中的函数有关,function就是global,箭头函数就是父类

箭头函数的作用:简化回调函数

var和let的区别//var是绑定到window.let时候绑定回到document

let name=“rypy”;
let obj={
name:“rypy_obj”,
fobj:function () {

    setTimeout(()=>{
        console.log(this.name);//rypy_obj
    },30),
    setTimeout(function () {
     
        console.log(this.name);//undefined
    },30)
}

}
obj.fobj();

let name=“rypy”;
let obj={
name:“rypy_obj”,
fobj: ()=> {
setTimeout(()=>{
console.log(this.name);//undefined
},30),
setTimeout(function () {
console.log(this.name);//undefined
},30)
}
}
obj.fobj();

let (a,b,c)=>{

}

arguments.callee.toString()可以获取当前作用域的代码

function person(){
this.a=()=>{
return ()=>{
console.log(this);
console.log(arguments.callee.toString());
}
}
}
new person().a()();
=>person { a: [Function (anonymous)] }
function Person(){
this.a=()=>{
return ()=>{
console.log(this);
console.log(arguments.callee.toString());
}
}
}

找爷爷的作用域,箭头函数本身作用域为起点
找父亲的作用域,定义箭头函数作用域->起点

箭头函数不能使用new,不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。;

箭头函数的特性:
1、箭头函数是匿名函数,不绑定自己的this,arguments,super,new.target
2*、箭头函数会捕获其所在上下文的this值,作为自己的this值,在使用call/apply绑定时,相当于只是传入了 参数,对this没有影响
3、箭头函数不绑定arguments,取而代之用rest参数…解决
4、箭头函数当方法使用的时候,没有定义this绑定5、箭头函数不能作为构造函数,和 new 一起用就会抛出错误
6、箭头函数没有原型属性 7、不能简单返回对象字面量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值