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]

原文地址:https://www.cnblogs.com/myniu/p/11771777.html

时间: 2024-08-30 13:35:36

e_函数_箭头函数的相关文章

论普通函数和箭头函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱.就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和箭头函数的区别: 箭头函数的this指向规则: 1. 箭头函数没有prototype(原型),所以箭头函数本身没有this let a = () =>{}; console.log(a.prototype); // undefined 2. 箭头函数的this指向在定义的时候继承自外层第一个普通函数的this

常规函数和箭头函数的this绑定问题

核心要点 function(){} 和 () => {} 的最大区别在于前者会在运行时绑定this对象,后者不会 由于function(){}在运行时在内部自动绑定this对象,则不会访问外部作用域this 由于() => {}不能自动绑定this对象,则只能访问外部作用域this 如果要使用动态绑定的this,则使用function(){} 如果要使用外部作用域的this,则使用() => {} 估计ES6就是因为function(){}总是自动绑定this造成嵌套function时需

区别ES3ES5和ES6this的指向问题。区分普通函数和箭头函数中this的指向问题

ES3 ES5this的指向问题 this指的是该函数被调用的对象 var foo = function () { this.a = 'a', this.b = 'b', this.c = { a: 'new a', b: function () { //new a 此时this指的是该函数被调用的对象 return this.a; } } } console.log(new foo().c.b()); //new a ES6的箭头函数 箭头函数的this指的是定义时this的指向,b在定义时,

6 JavaScript函数&内置构造&函数提升&函数对象&箭头函数&函数参数&参数的值传递与对象传递

JavaScript函数:使用关键字function定义,也可以使用内置的JavaScript函数构造器定义 匿名函数: 函数表达式可以存储在变量中,并且该变量也可以作为函数使用. 实际上是匿名函数. <body> <p>函数存储在变量后,变量可作为函数使用:</p> <p id="demo"></p> <script> var x = function(a,b){return a+b; }; document.g

JS函数和箭头函数

函数的声明和调用 函数定义可以使用"function"关键字,代码函数头和函数体组成,函数头可以由函数名和参数列表组成,语法格式:函数名(参数列表){函数体}.如 function name(arg){console.log(arg)} 调用 name(arg) 当函数没有函数名的时候称匿名函数 function(arg){console.log(arg)} 通常需要赋值给一个变量,不然报错 var name=function(arg) { console.log(arg) } 调用

ES6深入浅出-2 新版函数:箭头函数 2 视频-2.视频 箭头函数杂谈

杂谈coffeescript 箭头函数抄的是谁? coffeescript 双箭头的形式 箭头函数简洁的语法 数组内每一个值都平方一下 Map的写法 箭头函数的写法 平方后,每一个值再加1 number变量改成用n,更简化 瘦箭头 瘦箭头其实就是function 判断response里面的对象是否存在的情况 coffescript里面的解决方法,直接用问号解决了. vue中说不要使用箭头函数? 因为vue中依赖this 用到了箭头函数就别用this function()简写的写法,onClick

ES6深入浅出-2 新版函数:箭头函数 2 视频-1.视频 箭头函数

ES3里面的写法 匿名函数是用不了的 还是需要给他赋值 选中的这一部分叫做匿名函数 等于号叫做赋值 let xxx叫做声明 所以说这个地方是三个语法,首先声明一个匿名函数,然后声明一个xxx变量,最后把这个匿名函数赋值给这个变量xxx es6箭头函数 箭头函数只能做赋值,不能做声明 这是一个标准的箭头函数 写法2,只有一个参数 如果只有一个函数,可以不用写括号 调用一下做测试 写法3,函数体只有一句话的情况 如果函数体只有一句话,那么是可以不写花括号的. 假设我们的函数体只有return p1+

ES6 function函数和箭头函数区别

1.写法不一样 //function function fn(a,b){ return a+b } //arrow function var foo = (a,b)=>{ return a+b } 2.this的指向,function中的this可变(window,内部),箭头函数固定不变指向window function foo(){ console.log(this) } var obj = {aa:foo} foo() //window obj.aa()//obj var foo = ()

python-3_函数_匿名函数_正则_yield_迭代器_序列化_内置函数_模块

L=['a','b','c','d'] for (offset,item) in enumerate(L):    print offset,item 打印的结果: 0 a1 b2 c4 d 迭代器: for i in range(100):     生成列表 for i in xrange(100)    迭代器,速度会比range快 readlines()    xreadlines() 例子: def run():    print "test1"    yield 1