(1)普通函数:这种函数是我们日常使用中用的最多的,用function关键字定义的函数.这也是符合多种语言定义的。

function foo(){
// code
}

(2)箭头函数:用=>运算符定义的函数.这个是ES6的语法。

const foo = () => {
// code
}

(3)方法:在class中定义的函数。

class C {
foo(){
//code
}
}

(4)生成器函数:用function*定义的函数。

function* foo(){
// code
}

(5)类:用class定义的类,实际上也是函数。

class Foo {
constructor(){
//code
}
}

(6)异步普通函数

async function foo(){
// code
}

(7)异步箭头函数

const foo = async () => {
// code
}

(8)异步生成器函数

async function foo*(){
// code
}

这里主要介绍下箭头函数:

(1)如果箭头函数不需要参数或需要多个参数,可以使用圆括号代表参数部分。

var f=()=>5;

//等同于

var f=function(){return 5 };

var sum=(num1,num2)=>num1+num2;

//等同于

var sum=function(num1,num2)

{

return num1+num2;

}

如果箭头函数的代码块部分多余一条语句,就要使用大括号将其括起来,并使用return语句返回

var sum=(num1,num2)=>
{ let c=num1-45
 return c+num2;
}
(2)由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。
var getObject=id=>({id:id,name:'test'});
console.log(getObject(4))
输出:{id: 4, name: "test"}
 
箭头函数可以与变量解构结合使用
const full=({first,last})=>first+' '+last;
var person={'first':'22','last':'11'}
console.log(full(person))
 
等同于
var person={'first':'22','last':'11'}
function full(person)
{
  return person.first+' '+person.last
}
console.log(full(person))
(3)箭头函数的一个用处是简化回调函数。
console.log([1,2,3].map(function(x)
{
return x*x;
}))
等同于
console.log([1,2,3].map(x=>x*x))
结果为:[1, 4, 9]
 
 
var values=[3,2,6,8]
var result=values.sort(function(a,b)
{
return a-b;
})
console.log(values);
等同于
var result=values.sort((a,b)=>a-b)
console.log(values);
结果为:[2, 3, 6, 8]
 
rest参数和箭头函数结合的例子.
const numbers=(...numbes)=>numbes
console.log(numbers(1,2,3,4,5))
结果为:[1,2,3,4,5]
 
 
const headandTail=(head,...tail)=>{return tail}
console.log(headandTail(1,2,3,4,5))
结果为:[2,3,4,5]
 

Javascript中的几种函数的更多相关文章

  1. 实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

    实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本 ...

  2. 探究JavaScript中的五种事件处理程序

    探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...

  3. [转]Javascript中的自执行函数表达式

    [转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...

  4. 深入理解javascript中的立即执行函数(function(){…})()

    投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...

  5. javascript中的立即执行函数(function(){…})()

    javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包 ...

  6. 对 JavaScript 中的5种主要的数据类型进行值复制

    定义一个函数 clone(),可以对 JavaScript 中的5种主要的数据类型(包括 Number.String.Object.Array.Boolean)进行值复制 使用 typeof 判断值得 ...

  7. 深入理解javascript中的立即执行函数

    这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包住业务代码,使用jquery时比较常见,需要的朋友可以 ...

  8. js中的三种函数写法

    js中的三种函数写法 <script type="text/javascript"> //普通的声明方式 function myFun(m,n){ alert(m+n) ...

  9. JavaScript 中的12种循环遍历方法

    原文:JavaScript 中的12种循环遍历方法 题目:请介绍 JavaScript 中有哪些循环和遍历的方法,说说它们的应用场景和优缺点? 1.for 循环 let arr = [1,2,3];f ...

随机推荐

  1. Fiddler使用过程中容易忽略的小技巧

    fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不到包 近期总被同事问及ios机装了证书,但 ...

  2. SAP 表汇总

    SAP 表整理:VBKPF-预制凭证抬头表: VBKPF-预制凭证抬头表 VBKPF-预制凭证抬头表 VBSEG-预制凭证行项目表: VBSEG-预制凭证行项目表 VBSEG-预制凭证行项目表 VBS ...

  3. CAD简易口诀,保你一天就记住!零基础也能轻松学!CAD制图宝典!

    如何才能快速的学习CAD制图呢?不仅仅需要多练习,CAD口诀也是不能错过的哦!实用干货这一个就够了快点收藏起来! 1.创建直线的快捷方式是L+空格 2.创建圆的快捷方式是C+空格 3.创建圆弧的快捷方 ...

  4. Dynamics CRM 2015/2016新特性之三十四:有了插件日志,调试插件so easy!

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复217或者20160330可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  5. [转]How to enable macros in Excel 2016, 2013, and 2010

    本文转自:https://www.ablebits.com/office-addins-blog/2014/07/22/enable-macros-excel/#always-run-macros T ...

  6. 【Gradle】自定义Android Gradle工程

    自定义Android Gradle工程 defaultConfig默认配置 defaultConfig是Android对象中的一个配置项,负责定义所有的默认配置.一个基本的defaultConfig配 ...

  7. Google Admob移动广告快速集成步骤

    Google Admob移动广告快速集成步骤 第一步:引入依赖包 //admob广告 implementation 'com.google.android.gms:play-services-ads: ...

  8. Java中如何判断一个字符是否是字母或数字

    使用Java中Character类的静态方法: Character.isDigit(char c) //判断字符c是否是数字字符,如‘1’,‘2’,是则返回true,否则返回false   Chara ...

  9. Error creating bean with name 'sqlSessionFactory' defined in class path resource [config/spring/applicationContext.xml]: Invocation of init method failed;

    我报的错: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSes ...

  10. 验证登录的前世今生:session、cookie

    参考地址:彻底理解cookie,session,token 使用JSON Web Token设计单点登录系统 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录 ...