人工智能

ES6新增语法—函数和参数

时间:2010-12-5 17:23:32  作者:IT科技类资讯   来源:应用开发  查看:  评论:0
内容摘要:箭头函数箭头函数:将原来函数的function关键字和函数名都删掉,并使用”=>”连接参数列表和函数体。箭头函数语法:(参数1,参数2)=>{函数体}注意点:当参数有且只有一个,括号可以省

 箭头函数

箭头函数:将原来函数的新增function关键字和函数名都删掉,并使用”=>”连接参数列表和函数体。语法

箭头函数语法:

(参数1,函数和参参数2)=>{

函数体

}

注意点:

当参数有且只有一个,括号可以省略。新增没有参数或多个参数时,语法括号不能省略。函数和参 如果函数体有且只有一个表达式时,新增可以省略花括号。语法

箭头函数使用实例:

window.onload = ()=>{   console.log(网页加载完成) } 

参数只有一个时,函数和参省略掉括号。新增函数体只有一个表达式,语法花括号也省略。函数和参如:

let arr=[1,新增2,3,4] arr.forEach((item)=>  console.log(item,item) ) 

This指向问题

1、在全局环境下,语法this始终指向全局对象,函数和参无论是否严格模式。

2、普通函数内部的this分严格模式和非严格模式。

严格模式下this为undefined。 非严格模式下,this指向全局对象window。

3、箭头函数的 this 是上下文的this。

箭头函数相当于匿名函数,网站模板并且简化了函数定义,但箭头函数和匿名函数有个明显的差异,箭头函数内部的this是词法作用域,上下文的this值作为自己的this值。

Call()、apply()、bind()方法对于箭头函数只是传入参数,对它的this毫无影响。 考虑到this是词法层面上的,严格模式中与this相关的规则都将被忽略。

放在setTimeout中的两个箭头函数返回的this举例。

function Person(name,age){   this.name = name;  this.age = age;  setTimeout(()=>{    console.log(this,this) //Person { name: "倩倩", age: 18}  },100) } let p = new Person(倩倩,18) setTimeout(()=>{   console.log("this",this)//Window { window: Window, self: Window, document: document, name: "", location: Location, …} },1000) 

函数参数的默认值

在ES6之前,不能直接为函数的参数指定默认值,只能采取变通措施。

实例:普通函数给参数设置默认值

function sum(a,b){   a = a | 12;  b = b | 5;  return a+b } console.log(相加等于,sum()) 

ES6允许函数参数设置默认值,服务器租用即直接写在参数定义的后面。如

function sum(a=12,b=5){   return a+b } console.log(相加等于,sum()) 

ES6默认参数优点:

简洁,适用于参数多的时候,方便设置默认值。 阅读代码的人可以看出哪些参数是可以省略的,不用查看函数体或文档。 有利于代码的优化,即使未来版本拿掉这个参数,以前代码也可以运行,还有参数变量是默认声明的,不能在函数体内部再进行声明。

与结构赋值结合使用

function add({ x=1,y=2}={ }){   return x+y } console.log(相加等于,add({ x:2})) // 相加等于 4 

ES6函数不定参数和展开运算符

不定参数:

语法:...

类型:数组

作用:指定多个各自独立的参数,通过整合后的数组来访问。

限制:

最多只能声明一个 只能放在参数末尾

实例:简单应用

function show( a, ...args){   console.log(a,a)  console.log(args,...args) } show(1,2,3) 

展开运算符:

语法:...

作用:指定数组或对象,将他们打散后作为各自独立的参数。

实例:使用展开运算符展开数组。

let arr = [a,b,c] let arr2 = [] arr2.push(...arr) console.log(arr2,arr2) 

实例:使用展开运算符展开对象。

let person = {   name :倩倩,  age:18 } let worker = {   ...person,  job:"打杂" } console.log(worker,worker) 源码下载
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap