一个关于javascript匿名函数的问题

匿名函数,就是没有名字的函数。如:

function (){
alert('a function');
}

但是,上面的代码会报错。firebug提示:function statement requires a name,也就是:函数必须要有个名字。


奇怪的是,如果我用一对()把这个没有名字的函数包起来,就不会报错了。如:

(function (){
alert('a function');
})

(注意包裹函数的()!).虽然这样不会报错,但谁能知道这个函数是否声明成功了呢?是不是因为根本没声明所以才不报错呢?我们这样来测试:让函数自己执行一次:

(function (){
alert('a function');
}())

可以看到,函数执行了,表明函数是存在的。

同样,如果这个时候去掉包裹函数的(),则依然会报前面那个错,函数也执行不了。。。

function (){
alert('a function');
}()

 

这对包裹函数的(),真有这么重要?哪位高手解释一下原理呢?

链接: http://www.jo2.org/archives/307.htm

posted on   十年灯  阅读(939)  评论(7编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2012年3月 >
26 27 28 29 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

统计

点击右上角即可分享
微信分享提示