函数字面量(function literal):处理事件的无名函数(nameless function)。函数字面量有时也称为匿名函数(anonymous function)。

可以在onload事件完成所有事件的初始化。

函数字面量最好只被调用一次,而且不是被开发者写的程序代码调用。创建一个函数字面量并直接指派给一个元素的事件属性,而不是创建有名称的函数并指派到它的引用。

如果在代码中不需要函数引用时,为了编写程序的效率,同时不想中规中矩为函数命名,函数字面量(匿名函数)才显得有必要。

匿名函数调用:

调用一个函数,必须有方法定位它,找到它。

var functionName=function(a,b){

return a+b;

}

alert(functionName(2,8));// "10"

用()将匿名函数包括起来,然后在其后面添加一对小括号,当然可以在里面包含参数列表。

(function(a,b){return a+b;})(3,4);// "7"

问题:

在script代码中有onload事件函数。

第一种情况:

<script type="text/javascript">

(function () { alert("anonymousfunction") })();

window.onload = function () {

alert("I have been called!");

}

</script>

代码先后输出“anonymous function”,"I have been called!" 结果正确。

第二种情况:

<script type="text/javascript">

window.onload = function () {

alert("I have been called!");

(function () { alert("anonymousfunction") })();

}

</script>

结果和第一种情况相同。

第三种情况:

<script type="text/javascript">

window.onload = function () {

alert("I have been called!");

}

(function () { alert("anonymousfunction") })();

</script>

结果先alert出“I have been called!”,控制台报出错误:Uncaught TypeError: undefined is not a function.

匿名函数的生命周期和window.onload有内在的关系吗?

JavaScript中匿名函数的困惑相关推荐

  1. Javascript中匿名函数的多种调用方式

    avascript中定义函数的方式有多种,函数直接量就是其中一种.如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数.好,看看匿名函数的如何被 ...

  2. JavaScript中匿名函数的作用和用法

    匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染. 这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美. 例: <!DOCTYPE html& ...

  3. Js中匿名函数的理解

    目录 1.js中匿名函数的N种写法 最常见的用法: 2.JavaScript 匿名函数及闭包 2.1 匿名函数 2.1.1 函数的定义 2.1.2 匿名函数的创建 2.2 闭包 2.3 举例 2.4 ...

  4. Javascript中的函数重载-最佳做法

    用JavaScript伪造函数重载的最佳方法是什么? 我知道不可能像其他语言一样重载Javascript中的函数. 如果我需要两个函数一起使用foo(x)和foo(x,y,z) ,这是最佳/首选方式: ...

  5. javascript的匿名函数

    古人有"授之以鱼,不如授之以渔" ,没有老师,就只能自己学"渔"了.还是从简单的开始吧! 下面的这几句代码是最熟悉不过的了,但是你知道为什么这么写吗?为什么在页 ...

  6. 彻底理解JavaScript中回调函数 (推荐)

    在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...

  7. JavaScript中的函数表达式

    在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表 ...

  8. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  9. JavaScript中Exists函数

    JavaScript中Exists函数是如果 Dictionary 对象中存在所指定的主键则返回 true,否则返回 false.使用方法: object.Exists(key) 其中object是必 ...

最新文章

  1. 9.1 mnist_softmax 交叉熵多分类器
  2. 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
  3. 机器学习物语(4):PAC Learnability
  4. WCF服务端的.NET Core支持项目Core WCF 正式启动
  5. python篇第6天【数据类型】
  6. redhat oracle 开机自启动
  7. php公众号推荐,良心推荐6个优质实用又有趣的微信公众号!
  8. Android10加入APEX目的
  9. EXCEL 选中单元格并拖动等操作。
  10. 新浪微博批量删除功能
  11. 信息系统集成监理费收取标准_信息系统工程监理资费标准.doc
  12. linux 删除网桥接口,linux 网桥代码分析 三 网桥及网桥端口的添加与删除
  13. bootmgr is missing
  14. Hadoop实例学习(十三) Join应用
  15. html调用手机NFC,NFC门禁模拟-教你用NFC手机模拟门禁卡
  16. 【最新】iOS App上架AppStore 教程 (Part 二)
  17. 搬砖:数据结构之链表基本操作总结
  18. debian lenny的简单安装教程
  19. 程序员年底如何升职加薪?这份涨薪指南来了!
  20. Elasticsearch分页解决方案研究

热门文章

  1. 与成都的幸福行动家交流GTD
  2. linux之cp强制复制文件
  3. Hbase高级功能过滤(Filter)
  4. 执行shell脚本报/bin/bash^M: bad interpreter
  5. IDEA中启动tomcat
  6. 第一部分:基础知识(第一章)File | New | Project
  7. [Oracle]如何在Oracle中设置Event
  8. 【JavaScript高级程序设计】--第1章 JavaScript简介
  9. GoLang strings包函数用法
  10. Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码