JavaScript中匿名函数的困惑
函数字面量(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中匿名函数的困惑相关推荐
- Javascript中匿名函数的多种调用方式
avascript中定义函数的方式有多种,函数直接量就是其中一种.如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数.好,看看匿名函数的如何被 ...
- JavaScript中匿名函数的作用和用法
匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染. 这在给一个不是很熟悉的页面增加Javascript时非常有效,也很优美. 例: <!DOCTYPE html& ...
- Js中匿名函数的理解
目录 1.js中匿名函数的N种写法 最常见的用法: 2.JavaScript 匿名函数及闭包 2.1 匿名函数 2.1.1 函数的定义 2.1.2 匿名函数的创建 2.2 闭包 2.3 举例 2.4 ...
- Javascript中的函数重载-最佳做法
用JavaScript伪造函数重载的最佳方法是什么? 我知道不可能像其他语言一样重载Javascript中的函数. 如果我需要两个函数一起使用foo(x)和foo(x,y,z) ,这是最佳/首选方式: ...
- javascript的匿名函数
古人有"授之以鱼,不如授之以渔" ,没有老师,就只能自己学"渔"了.还是从简单的开始吧! 下面的这几句代码是最熟悉不过的了,但是你知道为什么这么写吗?为什么在页 ...
- 彻底理解JavaScript中回调函数 (推荐)
在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply() ...
- JavaScript中的函数表达式
在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表 ...
- 浅析 JavaScript 中的 函数 uncurrying 反柯里化
柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...
- JavaScript中Exists函数
JavaScript中Exists函数是如果 Dictionary 对象中存在所指定的主键则返回 true,否则返回 false.使用方法: object.Exists(key) 其中object是必 ...
最新文章
- 9.1 mnist_softmax 交叉熵多分类器
- 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
- 机器学习物语(4):PAC Learnability
- WCF服务端的.NET Core支持项目Core WCF 正式启动
- python篇第6天【数据类型】
- redhat oracle 开机自启动
- php公众号推荐,良心推荐6个优质实用又有趣的微信公众号!
- Android10加入APEX目的
- EXCEL 选中单元格并拖动等操作。
- 新浪微博批量删除功能
- 信息系统集成监理费收取标准_信息系统工程监理资费标准.doc
- linux 删除网桥接口,linux 网桥代码分析 三 网桥及网桥端口的添加与删除
- bootmgr is missing
- Hadoop实例学习(十三) Join应用
- html调用手机NFC,NFC门禁模拟-教你用NFC手机模拟门禁卡
- 【最新】iOS App上架AppStore 教程 (Part 二)
- 搬砖:数据结构之链表基本操作总结
- debian lenny的简单安装教程
- 程序员年底如何升职加薪?这份涨薪指南来了!
- Elasticsearch分页解决方案研究
热门文章
- 与成都的幸福行动家交流GTD
- linux之cp强制复制文件
- Hbase高级功能过滤(Filter)
- 执行shell脚本报/bin/bash^M: bad interpreter
- IDEA中启动tomcat
- 第一部分:基础知识(第一章)File | New | Project
- [Oracle]如何在Oracle中设置Event
- 【JavaScript高级程序设计】--第1章 JavaScript简介
- GoLang strings包函数用法
- Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码