箭头函数

目录

1. 认识箭头函数

2. 箭头函数的一些用法

1. 省略包含参数的小括号

2. 省略包含函数体的大括号

3. 嵌入函数

3. 箭头函数不能使用arguments


1. 认识箭头函数

es6 新增了使用胖箭头(=>)语法定义函数表达式的能力,很大程度上,箭头函数实例化的函数对象与正式的函数表达式创建的函数对象行为是相同的。任何可以使用函数表达式的地方,都可以使用箭头函数:

// 普通函数
let sum = function(a, b) {
	return a + b;
}

// 箭头函数
let sum1 = (a, b) => {
	return a + b;
}

箭头函数简洁的语法对开发者来说是十分友好的,从上面的例子可以得知箭头函数的简单用法:
(参数) => { 函数体 }

2. 箭头函数的一些用法

1. 省略包含参数的小括号

如果只有一个参数,那也可以不用括号。只有没有参数,或者多个参数的情况下,才需要使用括号:

// 有效
let sum = (x) => {
	return x;
};
// 有效
let sum1 = x => {
	return x;
};
// 没有参数需要括号
let sum2 = () => {
	return 1;
};
// 有多个参数需要括号
let sum3 = (a, b) => {
	return a + b;
};
2. 省略包含函数体的大括号

箭头函数也可以不用大括号,但这样会改变函数的行为。使用大括号就说明包含“函数体”,可以在一个函数中包含多条语句,跟常规的函数一样。

  • 省略大括号箭头后面就只能有一行代码;
  • 省略大括号会隐式返回这行代码的值;
  • 省略大括号不能写return。
    // 有效
    let sum = (a, b) => {
    	return a + b;
    };
    // 有效
    let sum1 = (a, b) => a + b; // 相当于 return a + b;
    // 无效的写法
    let sum2 = (a, b) => return a + b;
    

  • 3. 嵌入函数
  •  使用箭头函数可以更简洁地定义内部函数,而不需要使用 function 关键字。此外,箭头函数还继承了父级作用域的 this 值,这意味着在箭头函数内部,this 的值指向的是父级函数的 this 值。

  • 箭头函数简洁的语法非常适合嵌入函数的场景:

    let arr = [1, 2, 3, 4, 5];
    arr.map(val => val * 2); // [2, 4, 6, 8, 10]

    3. 箭头函数不能使用arguments

    如果函数是使用箭头语法定义的,那么传给函数的参数将不能使用 arguments 关键字访问:

    // 普通函数
    let sum = function() {
    	return arguments.length;
    }
    sum(1, 2, 3); // 3
    
    // 箭头函数
    let sum1 = () => {
    	return arguments.length;
    }
    
    sum1(1, 2); // Uncaught ReferenceError: arguments is not defined

    虽然箭头函数中没有 arguments 对象,但可以在包装函数中把它提供给箭头函数:

    function foo() {
    	let bar = () => {
    		console.log(arguments.length);
    	}
    	bar(); 
    }
    foo(5, 5, 5);  // 3
    

    4. 箭头函数中this 指向

    let num = 11;
    const obj1 = {
    	num: 22,
    	fn1: function() {
    		let num = 33;
    		const obj2 = {
    			num: 44,
    			fn2: () => {
    				console.log(this.num);
    			}
    		}
    		obj2.fn2();
    	}
    }
    obj1.fn1(); // 22
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值