ES6(四)(箭头函数)

箭头函数

  • 箭头函数是ES6中一种函数的简洁写法

正常写法

var 函数名 = (形参) =>{}
箭头函数只能简写函数表达式,不能简写声明式函数

    //函数表达式普通写法
    var fn = function(a,b){
        console.log(a+b);
    }
    fn(10,20);
    //箭头函数写法
    var fn_1 = (a,b) => {
        console.log(a+b);
    }
    fn_1(10,20)
  • 在对象中箭头函数的写法
    属性名:(形参) => {}
    var obj = {
        getName : (name) => {
            console.log(name);
        }
    }
    obj.getName('zs')

简洁写法

  • 函数只有一个参数时,可以省略小括号、
    var fn = x => {
        console.log(x);
    }
    fn(10)
  • 函数体只有一条语句的时候,可以省略大括号并return该语句
    var fn = (x) => console.log(x);
    fn(10)
	//结合上一条函数可以简写成
	var fn = x => console.log(x);

特点

  • 没有内置对象argumens
	var fn = function (){
		console.log(arguments);
	}
	var fun = ()=>{
		console.log(arguments);
	}
fn(1,2,3);	
fun(1,2,3);	//会直接报错

在这里插入图片描述

  • 没有prototype对象
var fn = () => {};
console.log(fn.prototype); // undefined
  • 没有this指向
  • 可以使用call() apply()调用,但不会改变this
    var obj_1 = {
        name: 'zs',
        getName: () => {
            console.log(this);
        }
    }
    obj_1.getName()

按前面学习的知识,对象中的函数中的this应该指向对象本身,但是这里的结果为window
在箭头函数中,没有this指向,如果在函数中使用this,则指向父作用域中this指向的地方
因此,在箭头函数中也不能改变this指向(包括apply()、call()方法),但是,如果想要改变箭头函数中this指向的地方,可以改变父作用域的this指向

  • 不能声明构造函数
var fn = () => {};
var fun = new fn(); // TypeError: fn is not a constructor

相关推荐

  1. ES6 箭头函数

    2024-07-20 17:12:03       60 阅读
  2. ES6 => 箭头函数

    2024-07-20 17:12:03       35 阅读
  3. es6箭头函数 原型

    2024-07-20 17:12:03       59 阅读
  4. 前端-ES6箭头函数以及带来的好处

    2024-07-20 17:12:03       50 阅读
  5. es6+-箭头函数细节与应用场景

    2024-07-20 17:12:03       32 阅读
  6. es6 中的箭头函数和普通函数有什么区别?

    2024-07-20 17:12:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 17:12:03       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 17:12:03       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 17:12:03       109 阅读
  4. Python语言-面向对象

    2024-07-20 17:12:03       117 阅读

热门阅读

  1. 数学建模熵权法

    2024-07-20 17:12:03       30 阅读
  2. RabbitMQ线程和连接模型详解

    2024-07-20 17:12:03       29 阅读
  3. 探索现代Web开发:WebKit的剪贴板API革新

    2024-07-20 17:12:03       39 阅读
  4. Node.js 路由

    2024-07-20 17:12:03       29 阅读
  5. JDK版本详解

    2024-07-20 17:12:03       24 阅读
  6. Zookeeper是什么,为什么要用,怎么用?

    2024-07-20 17:12:03       32 阅读
  7. 【c++】用c++类做一个猜数字游戏

    2024-07-20 17:12:03       28 阅读
  8. execjs._exceptions.ProgramError: SyntaxError: 语法错误

    2024-07-20 17:12:03       28 阅读