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有内在的关系吗?

参考资料:

匿名函数和闭包http://blog.csdn.net/natineprince/article/details/4759533

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python3

python3--小数据池,is,字符编码

python3x中的str在内存中的编码方式是unicode. python3x中的str不能直接存储和发送

23010
来自专栏积累沉淀

Python快速学习第三天

第三天: 字典 什么是字典? 字典是Python语言中唯一的映射类型。 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被...

19880
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(六) ——Redis中的压缩列表

《Redis设计与实现》读书笔记(六) ——Redis中的压缩列表 (原创内容,转载请注明来源,谢谢) 一、概述 压缩列表(ziplist)是列表键(list)...

40070
来自专栏chenjx85的技术专栏

leetcode-686-Repeated String Match(重复多少次A能够找到B)

14930
来自专栏codingforever

经典算法巡礼(二) -- 排序之选择排序

选择排序,如冒泡排序一样,从名字中即可大概猜测其排序的原理。其工作原理就是从未排序的数组中选出最大(小)的元素,将其放置至数组的首(尾)部,重复此过程直至没有未...

4310
来自专栏Java帮帮-微信公众号-技术文章全总结

Java对象结构【面试+工作】

在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。下...

16640
来自专栏数据结构与算法

3139 栈练习3

3139 栈练习3  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Descriptio...

29790
来自专栏炉边夜话

java 异常处理学习笔记

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

11320
来自专栏王磊的博客

JS性能优化

下面是一些关于客户端JS性能的一些优化的小技巧: 1.关于JS的循环,循环是一种常用的流程控制。JS提供了三种循环:for(;;)、while()、for(in...

65980
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-12(02)总结Scanner,String

(6)字符串的案例 A:模拟用户登录 B:字符串遍历 C:统计字符串中大写,小写及数字字符的个数 D:把字符串的首字母转成大写,其他小写 E:把int...

419100

扫码关注云+社区

领取腾讯云代金券