JavaScript函数直接量与立即执行函数表达式(IIFE)详解

作者:小括号时间:2026-10-21 21:22:57浏览:515

本文解析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的匿名类一样,定义并执行一个函数


作者最新文章