ES6中箭头函数 (=>)、三点运算符(...)的基本用法和注意事项(this指向)

简介: 学习ES6中箭头函数 (=>)、三点运算符(...)的基本用法和注意事项(this指向)。

目录


一、箭头函数


基础语法:


省略写法:


this指向:


1.全局函数下的this


2.对象方法里面的this


3.对像里面的箭头函数this


4.构造函数中的this指向问题


简单应用:


二、三点运算符


1.函数传不定参数,验证数组的长度。


2.与解构使用


3.与数组解构使用 函数传对象


4.扩展


1.用...输出数组


2.合并数组


3.将类数组转为真正的数组


4.复制数组


5.练习


一、箭头函数


基础语法:

() =>{} // ():函数 =>:必须的语法,指向代码块 {}:代码块


const realName = () => { } ;//把函数赋值给realName。


例:

const num = (k,v) => {
  return k+v;
}


省略写法:

如果形参或者代码块只有一句可以简写:


const myFun = (k) => {return k+1;}


简写:

const myFun = k =>  k +1;


this指向:

1.全局函数下的this

普通函数与调用者有关


箭头函数的this是静态 根据上下文的this


2.对象方法里面的this

这里的this是指向实例的

const Person = {
    realname:"张三",age:19,
    say:function(){
      console.log(this);
    }
    }
    Person.say(); //person实例


3.对像里面的箭头函数this

这里的this指向window

const Person = {
    realname:"张三",age:19,
    say:()=>{
      console.log(this);
    }
    }
    Person.say();//windows


4.构造函数中的this指向问题

普通的this可以改变实例


箭头函数中的this不会改变,一开始 new 的实例永远就是这个实例

function Person(realname,age){
    this.realname = realname;
    this.age = age;
    this.say = ()=>{  
      console.log(this);//这个this不会 当时new 实例是谁就是谁
    }
    this.say1 = function(){
      console.log(this);
    }
    }
    const P1 = new Person("张三",19);
    const P2 = new Person("李四",20);
    P1.say.call(P2);//{realname: '张三', age: 19, say: ƒ, say1: ƒ}
    P1.say1.call(P1);//{realname: '张三', age: 19, say: ƒ, say1: ƒ}


简单应用:

简单的点击事件,体现this的指向

<button id="btn">未点击</button>
  <script>
  let btnObj = document.querySelector("#btn");
  let flag = false;
  btnObj.addEventListener("click", function () {
    flag = !flag;
    if (flag) {
    setTimeout(() => {
      this.innerText = "已点击";//箭头this指向上下文
    }, 3000)
    } else {
    this.innerText = "未点击"; //调用者
    }
  })
  </script>

二、三点运算符


1.函数传不定参数,验证数组的长度。

function demo(a,...b){
      console.log(a,b);//b为数组 2,3,4,5
    }
    demo(1,2,3,4,5);


2.与解构使用

let [a,...b] = [1,2,3,4,5,6]
   console.log(a,b);//1,[2,3,4,5,6]

3.与数组解构使用 函数传对象

function demo({username,password}){
            console.log(username,password);
        }
        demo({username:'root',password:'123456'})


4.扩展

1.用...输出数组

 

const arr = [1,2,3];
        console.log(...arr);

   

2.合并数组

 

const arr1 = [1,2,3];
        const arr2 = [3,4,5];
        const arr3 = [...arr1,...arr2];
        console.log(arr3);

 

3.将类数组转为真正的数组

<div>1</div>
    <div>2</div>
    <div>3</div>
 <script>
        let div = document.querySelectorAll('div');
        const arr = [...div];
        console.log(arr);
        let str = '12345';
        console.log([...str]);
  </script>

4.复制数组

let arr1 = [1,2,3];
     let arr2 = [...arr1];
     console.log(arr1,arr2);


5.练习

 

let demo=(a,b)=> a+b;
        const arr1 = [1,2];
        const arr2 = [4,5];
        console.log(demo(...arr1));//3
        console.log(demo(...arr2));//9


相关文章
|
1月前
|
自然语言处理
ES6 中箭头函数和普通函数区别
【10月更文挑战第19天】这些仅是对箭头函数和普通函数区别的一些主要方面进行的详细阐述,实际应用中可能还会有更多具体的细节和情况需要进一步探讨和理解。可以根据自己的需求进一步深入研究和实践,以更好地掌握它们在不同场景下的应用。
36 2
|
3月前
|
JavaScript 前端开发
ES6+ 特性,箭头函数、解构赋值、模块导入
ES6+ 特性,箭头函数、解构赋值、模块导入
|
7月前
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
34 1
普通函数中的this指向问题解决方案箭头函数
普通函数中的this指向问题解决方案箭头函数
49 0
|
7月前
|
网络架构
ES6箭头函数的特性
ES6箭头函数的特性
|
7月前
|
JavaScript 前端开发 网络架构
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
76 1
|
7月前
|
自然语言处理 前端开发 安全
【面试题】ES6语法五之箭头函数
【面试题】ES6语法五之箭头函数
|
自然语言处理 JavaScript
ES6中的箭头函数及其使用场景
ES6 (ECMAScript 2015) 引入了许多新特性,其中之一就是箭头函数。箭头函数是一种更加简洁和便捷的函数定义方式,本文将详细介绍 ES6 中的箭头函数,并探讨其适用场景及注意事项。
134 0
|
JavaScript
ES6 从入门到精通 # 06:箭头函数 this 指向和注意事项
ES6 从入门到精通 # 06:箭头函数 this 指向和注意事项
122 0
ES6 从入门到精通 # 06:箭头函数 this 指向和注意事项
ES6 从入门到精通 # 05:函数之扩展运算符、箭头函数
ES6 从入门到精通 # 05:函数之扩展运算符、箭头函数
64 0
ES6 从入门到精通 # 05:函数之扩展运算符、箭头函数

热门文章

最新文章