JS箭头函数 Arrow Function

本文深入探讨了ES6中箭头函数的特性与用法,包括语法糖的使用、this绑定规则、以及如何将传统函数转换为箭头函数,旨在帮助开发者掌握更简洁的函数编写技巧。

箭头函数 Arrow Function

箭头函数的特点:

  1. 能够使函数的写法更简洁(一行写完一个函数)

  2. 函数返回值可以被隐式返回(不需要写reutrn)
  3. 不重新绑定this的值
  4. 使用胖箭头
//如何将下面的函数改写为箭头函数
function doubleValue(value){
    return value * value;
}

 首先要将原来的函数转化成如下函数

// es6规定 const定义的变量不可以修改,而且必须初始化。
const  doubleValue = function (){
        return value * value;
}

改写成箭头函数

// es6规定 const定义的变量不可以修改,而且必须初始化。
const  doubleValue =value =>{
        return value * value;
}

 无参的箭头函数

// es6规定 const定义的变量不可以修改,而且必须初始化。
const  gretting =() =>{
    console.log('HELLO WORLD'); 
}    

gretting();

有参有返回值的箭头函数

 
// es6规定 const定义的变量不可以修改,而且必须初始化。
const  gretting =(name) =>{
    
 return 'hello' + name;
}    

console.log(gretting('xx'));

两个参数有返回值的箭头函数

// es6规定 const定义的变量不可以修改,而且必须初始化。
const  addNum=(a,b) =>{
 return a + b;
}    
console.log(addNum(1,2));

将以上函数进一步简化,当括号里只有一个参数时,可以将其去掉(前提是有且仅有一个参数)

// es6规定 const定义的变量不可以修改,而且必须初始化。
const  gretting = name =>{
    
 return 'hello' + name;
}    

console.log(gretting('zs'));

还可以将其简化得到如下一行函数

const  gretting = name => 'hello--' + name;
console.log(gretting('fss'));

参数为数组写法如下

const companies = ['google','huawei'];
const  result = companies.map( company => 'hello---'+ company );
 console.log(result);

 

 

 

 

箭头函数Arrow Function)和普通函数在多个方面存在区别: ### 语法方面 - **简洁性**:箭头函数语法更简洁。当只有一个参数时,可省略括号;函数体只有一条语句时,可省略花括号和 `return` 关键字。例如: ```javascript // 箭头函数 const add = (a, b) => a + b; // 普通函数 function addNormal(a, b) { return a + b; } ``` ### `this` 指向方面 - **箭头函数**:`this` 值继承自外层函数或全局作用域,且在定义时就确定,不会随调用方式改变。 ```javascript const obj = { name: 'John', sayName: () => { console.log(this.name); // 这里的 this 指向全局对象 } }; obj.sayName(); ``` - **普通函数**:`this` 值取决于函数的调用方式,不同调用方式 `this` 指向不同。 ```javascript const obj = { name: 'John', sayName: function() { console.log(this.name); // 这里的 this 指向 obj } }; obj.sayName(); ``` ### 构造函数方面 - **箭头函数**:不能使用 `new` 关键字调用,没有自己的 `prototype` 属性,不能用作构造函数。 ```javascript const ArrowConstructor = () => {}; // 以下代码会报错 // const instance = new ArrowConstructor(); ``` - **普通函数**:可以使用 `new` 关键字创建对象实例,有自己的 `prototype` 属性。 ```javascript function NormalConstructor() { this.property = 'value'; } const instance = new NormalConstructor(); console.log(instance.property); ``` ### arguments 对象方面 - **箭头函数**:没有自己的 `arguments` 对象,若要访问,需依赖外层函数的 `arguments` 对象。 ```javascript const arrowFunc = () => { // 这里无法访问到箭头函数自己的 arguments console.log(arguments); }; arrowFunc(1, 2, 3); ``` - **普通函数**:有自己的 `arguments` 对象,包含函数调用时传递的所有参数。 ```javascript function normalFunc() { console.log(arguments); } normalFunc(1, 2, 3); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值