【Day22】立即函式(IIFE)

立即函式特点:

  • 立即执行
  • 无法在函式外再次执行

接着我们来看立即函式的语法

(function() {
    console.log('立即函式');
})();

此时能看见只要使用立即函式,函式内容会马上执行,

因此才会回传 '立即函式'

功能

以下会列出立即函式的功能

1. 限制变数作用域

在立即函式中的变数,其作用域只在函式内

(function() {
    const ming = '小明';
    console.log(ming);  // 小明
})();

console.log(ming);  // ming is not defind

能够看见立即函式中的 ming 有被回传,

但函式外的却是 ming is not defind

2. 传递参数

(function(where) {
    console.log(where);
})('weiwei');

我们将 'weiwei' 代入立即函式中,能看见回传 weiwei

而立即函式为表达式,因此可以使用 return 来将值赋予到变数中,

const whereWei = (function(where) {
    return where;
})('weiwei');

console.log(whereWei);

我们也可以使用两个立即函式来传递值

const a = {};
(function(b) {
    b.person = 'weiwei';
})(a);

(function(c) {
    console.log(c.person);
})(a);

它会先由第一个立即函式中赋予 a 物件 person 属性,

再由第二个立即函式将值回传,

而这也能使用在 window

(function(global) {
    global.person = 'weiwei';
})(window);

(function() {
    console.log(person);
})();

这种方式主要会用在大型的框架上,

以 Vue2 为例:

Vue2 原始码

我们能在开头看到是使用立即函式将 Vue 的内容写入全域当中

而结尾是将 Vue 的内容定义完後进行回传

以上就是今天立即函式的内容了,感谢观看!!


<<:  用 Line LIFF APP 实现信箱验证绑定功能(2) - 使用 Vite 快速打造输入页面

>>:  [Day9] - Docker Compose 介绍与实作

9.MYSQL输出写入的内容

建立好自己完整的表格之後,就可以开始搜寻自己要的东西了 SELECT * (全部栏位) FROM 什...

day29 : OPA规范k8s yaml(下)

今天会来实作OPA的配置,由於之前有透过rancher管理了k8s环境,所以就可以从rancher的...

了解box-model的重要性

了解box-model的重要性 可以把它想成一种容器,它可以容下多少物品的数量多寡或物品装在箱子里...

Day10 - 除噪模型

在 Day01 的时候我们有提到过资料可能会有杂讯、噪音,因此所使用的模型架构可以分为两个阶段:除噪...

[day13] 快速建构JSON Server

前面几篇做了几个交易相关的API,而为了快速跳过後端API的建置,前端网页要留存的资料源,就打算偷懒...