JS 立即调用的函数表达式(Immediately Invoked Function Expression,IIFE)是一种常见的编程模式,用于在定义时立即执行一个函数,并将其作用域保持在该函数内部,以避免变量污染全局作用域。下面是如何编写JS立即调用的函数表达式的完整攻略:
基本语法
(function() {
// 函数体
})();
该语法使用了最基本的IIFE语法结构,它由一个匿名函数表达式和一个立即调用的括号包裹而成。注意,最外层的括号可以是()
也可以是!
、+
、-
、~
、void
等符号。这是因为JS的解析器会将以(
开头的语句认为是表达式而非函数声明。
这个匿名函数本质上是一个闭包,可以访问该函数所在的作用域中的变量和函数。在IIFE内部定义的所有变量和函数都是局部作用域。当在函数体内部执行return
语句时,可以将其返回值传递给外部作用域。
传入参数
(function(num) {
console.log(num);
})(42);
IIFE可以接收传入的参数,并在函数体内使用。在括号内部,可以传递任意数量的参数,用逗号分隔。在函数体内部,可以像普通函数一样使用这些参数。
暴露接口
let result = (function() {
let privateVariable = 'private';
return {
publicVariable: 'public'
}
})();
console.log(result.publicVariable); // 'public'
console.log(result.privateVariable); // undefined
通过将函数的返回值返回给一个变量,可以将函数内部的变量和功能暴露出去。在上面的例子中,privateVariable
是一个私有变量,只能在函数内部访问。通过将返回值定义为一个对象,可以将公共变量publicVariable
暴露出来。
在调用时,可以访问publicVariable
属性,但不能访问privateVariable
属性。这种模式称为模块化模式,在处理代码库时非常有用。
总的来说,IIFE是一种强大且灵活的编程模式,可以使任何代码更加干净、可读、可维护,同时也更加安全。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 立即调用的函数表达式如何写 - Python技术站