工欲善其事必先利其器

在学习JavaScript设计模式一书时,遇到了“匿名回调函数”这个概念,有点疑惑,查找了些资料重新看了下函数的相关知识点之后,对这个概念有了认识。九层之台,起于垒土。在熟悉这一系列的概念之前,我们先来认识下JavaScript中函数吧。

一、定义函数的方式有两种:

  • 函数声明
  • 函数表达式

函数声明格式如下:  

function functionName(arg0,arg1,arg2,...){
  //函数体
}

function是关键字,然后functionName是函数的名字,这就是指定函数名的方式。这个函数的name属性是functionName。

函数表达式最常见的一种格式如下:

var varfun=function(){
//函数体
}

创建一个函数并将它赋值给变量varFun,这种情况下创建的函数叫匿名函数(拉姆达函数)。匿名函数的name属性是空字符串。

以下代码测试两种定义方式的name属性值:

function fun(){
}
console.log(fun.name);//fun var varfun=function(){
}
console.log(fun.name);//空的

二、函数调用方式

匿名函数的自调用方式:

//无参
(function(){
})(); //带参
(function(a,b){
alert(a+b);
})(3,5);

函数的回调方式:(通过函数指针调用函数)

//first
function math(num1,num2){
return minus(num1,num2);
// return add(num1,num2);
}
function add(num1,num2){
return num1 + num2;
}
function minus(num1,num2){
return num1-num2;
}
alert(math(1,2));

匿名回调函数:

函数声明采用表达式形式,通过变量名调用。

var minus=function(num1,num2){
return num1-num2;
}
function math(num1,num2){
if(num1>num2)
return minus(num1,num2);
else
return minus(num2,num1);
}

前端小白,如有不对,请斧正。

JS中的匿名函数、回调函数、匿名回调函数的更多相关文章

  1. js进阶js中支持正则的四个常用字符串函数(search march replace split)

    js进阶js中支持正则的四个常用字符串函数(search march replace split) 一.总结 代码中详细四个函数的用法 search march replace split 二.js进 ...

  2. js中使用function定义类、实例化,函数的调用方法

    function Test002(name, age){ name, age, this.printInfo = function(){ //定义的公有方法 console.log(name, age ...

  3. JS中var声明与function声明两种函数声明方式的区别

    JS中常见的两种函数声明(statement)方式有这两种: // 函数表达式(function expression) var h = function() { // h } // 函数声明(fun ...

  4. 关于原生js中ie的attacheEvent事件用匿名函数改变this指向后,不能用detachEvent删除绑定事件的解决办法?

    博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/28/%e5%85%b3%e4%ba%8e%e5%8e%9f%e7%94%9fjs%e ...

  5. 在js中获取query string 以及重写URL的函数

    函数用途:如标题.1. 从URL中解析出參数,2.重写URL中的參数值 例如以下代码所看到的.包括了測试.能够直接copy到浏览器中,输入測试地址:localhost:xxx?a=1&b=2& ...

  6. JS中有关分支结构、循环结构以及函数应用的一些简单练习

    案例一:搬桌子    年龄大于七岁男女都可以搬桌子,年龄小于七岁大于五岁的男生可以搬桌子: var num =parseInt(prompt("请输入你的年龄")) var sex ...

  7. js中回调函数,promise 以及 async/await 的对比用法 对比!!!

    在编程项目中,我们常需要用到回调的做法来实现部分功能,那么在js中我们有哪些方法来实现回调的? 方法1:回调函数 首先要定义这个函数,然后才能利用回调函数来调用! login: function (f ...

  8. JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法 在JS中无论是setTimeout还是s ...

  9. JS中setInterval、setTimeout不能传递带参数的函数的解决办法

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决. 一.采用字符串形式:——(缺陷)参数不能被周期性改 ...

  10. js中startWith、endWith 函数不能在任何浏览器兼容的问题

    在做js测试的时候用到了startsWith函数,但是他并不是每个浏览器都有的,所以我们一般要重写一下这个函数,具体的用法可以稍微总结一下 在有些浏览器中他是undefined 所以我们可以这样的处理 ...

随机推荐

  1. tpcc-mysql测试mysql5.6 (EXT4文件系统)

    操作系统版本:CentOS release 6.5 (Final)  2.6.32-431.el6.x86_64 #1 内存:32G CPU:Intel(R) Xeon(R) CPU E5-2450 ...

  2. pspice中参数的意义

    摘自:http://royroyyy.blog.163.com/blog/static/137650617201102610471196/ 有源器件在符号库中的名称(NAME)通常以关键字开头,后根长 ...

  3. django 的保护机制

  4. 【leetcode】1090. Largest Values From Labels

    题目如下: We have a set of items: the i-th item has value values[i] and label labels[i]. Then, we choose ...

  5. UEditor可以如何直接复制word的图文内容到编辑器中

    如何做到 ueditor批量上传word图片? 1.前端引用代码 <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  6. leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和]

    题目链接 Given a m x n matrix mat and an integer threshold. Return the maximum side-length of a square w ...

  7. UE4 命令行打开工程

    创建快捷方式,目标填写: D:\EpicGames\4.14\Engine\Binaries\Win64\UE4Editor.exe "D:\YourProjectPath\YouProje ...

  8. 【进阶技术】一篇文章搞掂:OAuth2

    一.第一步 1.什么是OAuth2,为什么应该了解 应用程序请求资源所有者进行认证,并接受tokens来访问这些资源应用程序不是以控制资源的“人”的角度去访问资源,而是用许可证举例,备用钥匙,车主主钥 ...

  9. 从DBA_DDL_LOCKS视图获得DDL锁定信息

    http://liwenshui322.iteye.com/blog/1166934 DDL锁有三种: 1.排他DDL锁(Exclusive DDL lock):这会防止其他会话得到它们自己的DDL锁 ...

  10. postgresql中实现按周统计详解

    SELECT EXTRACT(DOW FROM CURRENT_DATE);   执行结果如下. 这个SQL语句的意思就是计算当前日期是一周中的第几天. EXTRACT(DOW FROM CURREN ...