js中的箭头函数

本文详细介绍了ES6中引入的箭头函数,包括其语法特性与使用场景。箭头函数简化了函数定义,提供了两种格式:单表达式格式和多语句格式。文章通过实例对比了普通函数与箭头函数的异同,展示了箭头函数如何简化代码。

ES6标准新增了一种新的函数:Arrow Function(箭头函数)。

x => x * x

上面的箭头函数相当于:

function (x) {
    return x * x;
}

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ ... }return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }return

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>js中的箭头函数</title>
	</head>
	<body>
		<script>
			// 普通函数
			function getSum(x,y){
				return x+y;
			}
			var sum1 = getSum(1,2);
			console.log(sum1);
			// 结果是3 
			
			// 箭头函数
			(a,b) => a+b;
			var fn = (a,b)=>a+b;
			console.log(fn(1,2));
			// 结果是3
			
			// 箭头函数相当于匿名函数,简化了函数定义;
			// 箭头函数有2种格式,1. x=>x*x  只包含一个表达式 省略了{...}和return   2.包含多条语句,不能省略{...}和return
			x => {
				if(x>5){
					return x-5;
				}else{
					return x;
				}
			}
			var fn2 = x => {
				if(x>5){
					return x-5;
				}else{
					return x;
				}
			};
			// 打印值是25
			console.log(fn2(30));
			
			// 若参数不是1个,那么就要用()括起来
			(x,y)=>{
				if(x>5&&x<10){
					return x+y;
				}else{
					return x-y;
				}
			}
			var fn3 = (x,y)=>{
				if(x>5&&x<10){
					return x+y;
				}else{
					return x-y;
				}
			};
			console.log(fn3(1,4));
			// ps如果是要返回一个对象,那么下面的做法是错误的
// 			x=>{
// 				"value":x
// 			}
			// 会报错 Uncaught SyntaxError: Unexpected token :
			//需要修改成如下
			x => ({
				"value":x
			})
			
		</script>
	</body>
</html>

 

 

### JavaScript 箭头函数的用法和特性 #### 语法简介 箭头函数是 ES6 引入的一种新特性,提供了一种更为简洁的方式来编写函数表达式。相比传统 `function` 关键字定义的方式,箭头函数允许开发者写出更紧凑且更具可读性的代码[^3]。 #### 定义形式 对于无参情况下的箭头函数可以直接写作如下: ```javascript const noParamFunc = () => console.log('No parameters'); noParamFunc(); ``` 当只有一个参数时,括号是可以被省略掉的;而多个参数则需放在圆括号里边分开列举出来[^2]: ```javascript // 单个参数的情况 let greetUser = user => alert(`Hello ${user}`); greetUser("Alice"); // 多个参数的情形 var sumNumbers = (num1, num2) => { return num1 + num2; }; console.log(sumNumbers(7,8)); ``` #### 返回值处理 如果函数体内仅存在一条简单的表达式语句,则无需显式声明 `return` 关键字——此时该表达式的计算结果会被自动当作返回值传出[^4]。 ```javascript const add = (a,b) => a+b; // 隐含地执行了 return(a+b); alert(add(5,9)); // 输出:14 ``` #### This 的行为差异 不同于普通函数内部拥有独立的作用域链以及自身的 this 指针,箭头函数并不会创建新的上下文环境,而是沿用了外部最近一层非箭头函数内的 this 变量取值[^5]。这意味着在某些场景下(比如事件监听器或者定时器),使用箭头函数能够避免因意外改变 this 所带来的 bug 或者困惑。 #### Arguments 对象替代方案 由于历史原因,旧版 JavaScript 函数支持通过内置变量 arguments 访问传入的所有实参列表。然而这一机制并不适用于现代风格编写的箭头函数之中。为了兼容性考虑并保持一致性,建议采用剩余运算符 (`...`) 来捕获不定数量的位置形参。 ```javascript const logArgs = (...args) => args.forEach(arg=>console.log(arg)); logArgs('first', 'second'); // first second ``` #### 构造实例限制 值得注意的是,出于设计上的考量,箭头函数不允许作为类构造器调用,即不能配合 new 运算子一起工作来生成新的对象实体。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvzhengyang

感谢,励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值