函数
箭头函数
// 有有一个变量且直接return的 var f = v => v; // 等同于 var f = function (v) { return v; }; // 不需要参数或需要多个参数 不直接return的 var sum = (num1, num2) => { let k=num1 + num2; return k; }; // 等同于 var sum = function(num1, num2) { let k=num1 + num2; return k; };
箭头函数的this问题
插一句 call的使用
var a = 10; function call_1() { console.log(this.a); } var call_obj = { a: 20 } call_1();//10 call_1.call(call_obj);//20 this指向call_obj
关于 箭头函数的this 没看懂 自己总结的......别信
// 直接写好的箭头函数 通过点点点就能调用的 obj1.fn_new(); this执行window; var ts = ‘全局‘; const obj1={ ts:"obj1", fn_new:()=>{ console.log(this.ts); } } obj1.fn_new(); //全局 //无论多少层 直接能 点 点 点的就是 this就是指向 window const obj3={ ts:"obj3", fn_obj:{ ts:"obj3_3", fn_new_2:()=>{ console.log(this.ts); } } } obj3.fn_obj.fn_new_2() //全局
// 如果箭头函数使用过 ()diao调用之后才得到的。 var ts = ‘全局‘; const obj2={ ts:"obj2", fn_new_1:function(){ console.log(this.ts); return ()=>{ console.log(this.ts); } } } let fn=obj2.fn_new_1(); //obj2 fn就是箭头函数 通过()调用才得到 fn(); //obj2 //箭头函数的this跟 生成箭头函数的那个函数(这里的是fn_new_1函数)的this指向相同 //这里的是fn_new_1函数的this指向 调用它的fn_obj对象 // call改变this的时候箭头函数也跟着变 const obj3={ ts:"obj3", fn_obj:{ ts:"obj3_3", fn_new_1:function(){ console.log(this.ts); return ()=>{ console.log(this.ts); } } } } let fnn=obj3.fn_obj.fn_new_1();//obj3_3 fnn();//obj3_3
神奇的一些
//箭头函数本身是没有this 箭头函数多次嵌套 内层的this等于外层的this var a=2; var k={ a:1, ff:function(){ console.log(this.a) return ()=>{ console.log(this.a); return ()=>{ console.log(this.a); } } } } let f1=k.ff(); //1 let f2=f1(); //1 f2(); //1
// 使用settimeout 是 感觉前面的想法又不对了 不管定时器就对了 // 只有调用 foo函数时 定时器才会启动 箭头函数才生效 //箭头函数的this跟 生成箭头函数的那个函数(这里的是foo函数)的this指向相同 var id=10; function foo() { console.log(this.id);//10 setTimeout(() => { console.log(‘id:‘, this.id); }, 100); } foo();//10 foo的this指向 window(因为window.foo()) var kk={ id:20, fuu:function(){ setTimeout(() => { console.log(‘id:‘, this.id); }, 100); } } kk.fuu();//20 fuu的this指向 kk 箭头函数也就指向kk
箭头函数的arguments
//获取实参 function func(a,b,c){ console.log(arguments); //[1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ] console.log(arguments[4]); //undefined console.log(arguments[3]); //4 } func(1,2,3,4) //...a 解开后的结果等于1,2,3 所以a的等于 [1,2,3] let fn=(...a)=>{ console.log(a); } fn(1,2,3);// [1, 2, 3]
原文地址:https://www.cnblogs.com/myniu/p/11771777.html
时间: 2024-11-10 09:01:53