JS自调用函数

做个笔记。。。
例如:

(function (){
    console.log("函数");
})();
推理过程:
function fn1(){
    console.log("函数");
};

//   调用函数
fn1();

//   fn1时函数名,它包含函数的代码,函数的代码就是“function(){console.log("函数");}”,用括号包裹,替换fn1,得:

(function (){
    console.log("函数");
})();

此函数是一次性函数,申明的同时就调用了,页面加载完后函数就执行完了

(function (形参){
    console.log("函数");
})(实参);

那么,再引申一个例子:实现局部变量到全局变量的转换

(function (win){
    var num=123;
    win.numk=num
})(window);
console.log("numk");  //全写就是console.log("window.numk");

局部变量将值赋给window。

window是对象,所以不能写win=num,再log(win),需要采用添加属性的方式

### JavaScript自调用函数介绍 JavaScript自调用函数,也被称为立即执行函数表达式(IIFE, Immediately Invoked Function Expression),是一种在定义后立即执行的函数。它并不是在代码的其他地方被调用,而是在创建时就自动运行。这种函数通常用于创建独立的作用域,避免全局变量污染,以及封装代码逻辑。 ### JavaScript自调用函数使用方法 #### 基本语法 IIFE的基本语法有两种常见形式: - 使用括号将函数定义包裹起来,然后紧跟另一对括号进行调用。 ```javascript (function() { // 函数体 console.log('这是一个立即执行函数'); })(); ``` - 在函数定义前加上 `+`、`-`、`!` 等一元运算符,然后紧跟括号调用。 ```javascript !function() { console.log('这也是一个立即执行函数'); }(); ``` #### 传递参数 IIFE可以像普通函数一样接受参数: ```javascript (function(message) { console.log(message); })('传递给立即执行函数的消息'); ``` #### 返回值 IIFE也可以返回值,并且可以将返回值赋给一个变量: ```javascript var result = (function() { return 42; })(); console.log(result); // 输出 42 ``` #### 实际应用场景 - **避免全局变量污染**:在一个大型项目中,为了避免不同模块之间的变量名冲突,可以使用IIFE来创建独立的作用域。 ```javascript (function() { var privateVariable = '这是一个私有变量'; // 这个变量只能在这个IIFE内部访问 })(); ``` - **模拟块级作用域(ES5时代)**:在ES6引入 `let` 和 `const` 之前,IIFE可以用来模拟块级作用域。 ```javascript (function() { for (var i = 0; i < 5; i++) { // 这里的i只在这个IIFE内部有自己的作用域 } })(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值