美文网首页ES6
ES6基本的语法(五) 箭头函数

ES6基本的语法(五) 箭头函数

作者: StevenTang | 来源:发表于2021-02-03 23:22 被阅读0次

箭头函数

特点

  • 不用写 function
  • 只能作为函数使用不能 new, 没有原型
  • 参数不能重复命名
  • 返回值可以不写 return,但是有时需要配合{}
  • 内部 agruments this 由定义时外围最接近一层的非箭头函数的 agruments 和 this 决定其值

基本使用

不用写 function


// ES5 中的写法

function box (a,b){
    let c = a + b;
    console.log(c);
}

// 箭头函数的写法

let box = (a,b)=>{
    let c = a + b;
    console.log(c);
}

// 数组接受箭头函数

let arr = [()=>[]]

arr[0]();

// 对象中的属性接受箭头函数

let obj = {
    fn:()=>{

    }
}

obj.fn();

返回值可以不写 return,但是有时需要配合{}

// 省略 return 的写法

let box = (a, b)=> a+b

box(1,2) // 输出 3

// 数组也可以

let box = (a, b)=> [a,b]

box(1,2) // 输出 [1,2]

// 注意如果要返回对象需要表达式

let box = (a, b)=> ({a:a,b:b})

box(1,2) // 输出 {a: 1, b: 2}

参数不能重复命名

let box = (a, a)=> ({a:a,b:b})

box(1,2) // 报错

只能作为函数使用不能 new, 没有原型


let sum = (a+b) => a+b

new sum(); // sum is not a constructor

// sum 不是构造函数, 所以也没有原型

箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。

箭头函数中的参数和this

上面我说了箭头还是没有自己的this 和 arguments

箭头函数中的 arguments


let sum = (a, b) =>{
    console.log(agruments, a, b)
}
sum(1,2) // 报错: agruments 未定义

function box (){
    let sum = (a, b) =>{
        console.log(agruments, a, b) // 输出函数 box 的 agruments 所以是 [11, 12], 1, 2
    }
    sum(1,2)
}
box(11,12);

// 对比 ES5

function box1 (){
    var arg = agruments
    return function (){
        console.log(arg, agruments)
    }
}

box1(1,2);

// 如果要在 ES5 中要拿到 box1 的参数列表,要用这种方式写,但是在 ES6 中可以用箭头函数直接拿到

所以说箭头函数内部 agruments 由定义时外围最接近一层的非箭头函数的 agruments 决定其值

箭头函数中的 this

在全局定义中

let box = (a, b)=>{
    conosle.log(this);
}
box(); // 打印出 window

把上面的代码我们转成 ES5 来看一下

() => console.log(this)

// 经过 babel 转化后的 ES5 代码如下

var self = this
(function () {
  console.log(self)
})

所以在全局定义中箭头函数的 this 是指向 window 的

在局部中定义

var a = 'chengchengcheng';

let box = ()=>{
    conosle.log(this.a);
}

let obj = {
    a: 'cccccc',
    fn: box
}

let obj1 = {
    a: 'cccccc',
    fn: ()=>{
        conosle.log(this.a);
    }
}

obj.fn() // 输出 chengchengcheng
obj1.fn() // 输出 cccccc // 因为 obj1 是对象, 不是函数

这里还是输出的是全局变量中 a 的值。因为箭头函数内部 this 由定义时外围最接近一层的非箭头函数的 this 决定其值


var a = 'chengchengcheng';

let obj = {
    a: 'cccccc',
    fn (){
        let box = () =>{
            cnosole.log(this.a)
        }
        box();
    }
}

obj.fn() // 输出 cccccc

在函数中


function a(x){
    return function (y){
        return function (z){
            return x + y + z
        }
    }
}

var sum = a(1);
var sum1 = sum(2);
console.log(sum1(3)) // 输出 6

// 遇到这种情况使用箭头函数,会特别的简单

let a = x => y => z => x + y + z;

console.log(a(1)(2)(3)); // 输出 6

相关文章

  • 箭头函数

    一、基本语法 1.定义函数 定义箭头函在数语法上要比普通函数简洁得多,ES6中允许使用箭头 => 来定义箭头函数,...

  • ES6 中的箭头函数(z)

    ES6 中的箭头函数 定义 定义一个箭头函数很简单,基本语法是: ([param] [, param]) => {...

  • JavaScript箭头函数

    ES6新语法箭头函数 箭头函数是ES6新语法,因为语法简单、可读性好,所以使用的也很多。箭头函数也是匿名函数,区别...

  • ES6中的箭头函数

    基本语法 ES6 允许使用“箭头”(=>)定义函数。 上面的箭头函数相当于: 如果箭头函数不需要参数或需要多个参数...

  • 箭头函数

    1.箭头函数 基本语法:ES6允许使用“箭头”(=>)定义函数 如果箭头函数不需要参数或需要多个参数,就使用一个圆...

  • ES6 - 箭头函数、箭头函数与普通函数的区别

    这篇文章我们来了解一下ES6中的箭头函数。首先会介绍一下箭头函数的基本语法,因为基本语法比较好理解,我们用示例做简...

  • js学习笔记4(函数)

    1.箭头函数 ES6新增属性。箭头函数特别适合嵌入函数的场景。 箭头函数虽然语法简介,但是很多场合不适用。箭头函数...

  • 【ES6】箭头函数用法与深入理解

    语法 ES6 允许使用“箭头”(=>)定义函数,可以简单的认为箭头的左边是函数的参数,箭头的右边是函数的声明(函数...

  • 解析ES6箭头函数中的this

    ES6中新增了箭头函数这种语法,箭头函数以其简洁性和方便获取this的特性,接下来通过本文给大家分享ES6箭头函数...

  • javascript箭头函数、匿名函数

    箭头函数 箭头函数(Arrow Function)是ES6标准新增的函数,基本格式:(...参数)=>{函数声明}...

网友评论

    本文标题:ES6基本的语法(五) 箭头函数

    本文链接:https://www.haomeiwen.com/subject/yqdvtltx.html