ES6——ES6语法之箭头函数、剩余参数

发布于:2022-12-26 ⋅ 阅读:(329) ⋅ 点赞:(0)

文章目录

  • 前言
  • 箭头函数
    • 1. 基础语法
    • 2. 省略写法
    • 3.  this 指向问题
    • 3.1 普通函数中的this
    • 3.2  对象方法里的this
    • 3.3  构造函数对象的this
    • 3.4 apply/call调用时的this
    • 3.5 箭头函数中this
  • 二、剩余参数
    • 1. 传不定参数
    • 2.  剩余参数与解构使用
  • 总结


前言

在前文我们介绍了ES6中的let,const……今天书接上回,继续说ES6中的相关知识点吧!


一、箭头函数

1. 基础语法

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

举例:

//原js写法

function myFun(k,v){     

      return k + v;

}

//es6 写法

const myFun1 = (k,v) => {

      return k+v;

}

2. 省略写法

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

例如:

Const myFun = (k) => {return k+1;} 简写:

Const myFun = k =>  k +1;

3. this 指向问题

3.1  普通函数中的this

案例解析——

这是一个普通函数,globalTest()是全局性的方法,属于全局性调用,因此this就代表全局对象window。

var name = "global this";
function globalTest() {

console.log(this);//window
console.log(this.name);//global this
This.name = “global this change”;

}
globalTest(); 

3.2  对象方法里的this

案例解析——

如果函数作为对象的方法调用,this指向的是这个上级对象,即调用方法的对象。

const person = {
			   name:"张三",
			   age:18,
			   say:function(){
				  console.log(this.name);// 张三 这时候的this是person的对象
			   }
 }
person.say();

3.3  构造函数对象的this

案例解析——

构造函数中的this指向新创建的对象本身。

var name = "golbal";
 function person(name,age){
			   this.name = name,
			   this.age = age,
			   this.say = function (){
				   console.log(this.name,this.age);
			   }  
 }
const person1 = new person("张三",18);
const person2 = new person("小帅",19);
person1.say();
person2.say()

3.4 apply/call调用时的this

call(thisObj,Object) 调用一个对象的一个方法,以另一个对象替换当前对象。

说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

const person1 = {name:"张三",age:18};
var name = "G_张三",age = "G_18";
		
function myfun1(){
		console.log(this.name,this.age);
 }
myfun1();//对象是Windows
myfun1.call(person1);//对象改变为person1

call  apply  两者的区别——myfun.call(person,18,29); myfun.apply(person,[18,29]);

3.5 箭头函数中this

箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this。

箭头函数中的this指向是它所定义(声明)的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁。

const obj = { name: '张三'} 
		 function fn () { 
			 console.log(this);//this 指向 是obj对象
			 return () => { 
				 console.log(this);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在fn里面,而这个fn指向是的obj对象,所以这个this也指向是obj对象
			 } 
		 } 
		
const resFn = fn.call(obj); //{ name: '张三'} 
resFn();//{ name: '张三'} 

二、剩余参数

剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数。

1. 传不定参数

function myfun(k1,...k2){
			console.log(k1);//10
			console.log(k2);//(2) [20, 30]
}
myfun(10,20,30);

2.  剩余参数与解构使用

案例一:


let numarr = [1,2,3];
let [num1,...numx] = numarr;
console.log(num1);//1
console.log(numx);// [2,3]


案例二:

function connect({host,port,username,password}){
	console.log(host);
}
	
connect({
	host:"127.0.0.1",
	port:"3306",
	username:"root",
	password:"root"
})

总结

就此停笔,最后,依旧诚挚祝福看到这篇小文的人有个好心情。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到