e_函数_箭头函数

函数

箭头函数

	// 有有一个变量且直接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]

猜你喜欢

转载自www.cnblogs.com/myniu/p/11771777.html