JavaScript函数直接量与立即执行函数表达式(IIFE)详解
本文解析JavaScript中函数直接量的定义与调用方式,重点讲解(function(){})()这种立即执行函数表达式(IIFE)的语法原理。通过对比常规函数声明与赋值,说明为何需要括号强制将函数作为表达式处理,并阐述其在变量存储、参数传递及避免全局污染方面的应用价值。
函数直接量与立即执行函数语法解析
这种语法形式指的是什么?
具体示例如下:
<script language="JavaScript">
(function(){
document.write("some script code");
})()
</script>
<script language="JScript" type="Text/JScript">
<!--
var a=(function(s){return s})("abc");
alert(a);
var b=function(s){return s};
alert(b("abc"));
//-->
</script>
函数直接量的定义与特性
引用
如何解释这种写法?
大家应该记得这种定义方式:
var a=function (){}
那么如何执行这个函数呢?
即通过a()进行调用。
同理,
如果不通过变量a来存储函数,直接写法是:
即
function(){}()
但你会发现这样直接写会报错。
因为JavaScript解析引擎在解析时,遇到}会判断函数定义结束,
而不会将那个函数作为代码块来执行。
因此加上()是强制将function部分作为表达式块来处理。
by flashsoft
引用
这应该被称为函数直接量。
function f(x) {return x*x;}
var f=function(x) {return x*x;} ----此种写法定义的函数称为函数直接量,是定义函数的一种方法。它是一个表达式而不是语句。此函数是匿名函数,f只是对函数的引用,不是函数名。
函数直接量可以存储在一个变量中,或传递给其他函数,甚至被“直接调用”。
var t=(function(x) {return x*x;})(10);//定义一个函数并且调用此函数。
--------以上引自《javascript权威指南》by lyxscn
引用
就像Java的匿名类一样,定义并执行一个函数
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
