JS 立即函式 DAY61

有关函式的基础介绍
可参考我之前发的文章
https://ithelp.ithome.com.tw/articles/10253184/draft


在我们之前使用的函式
我们都必须呼叫它
但我们若不想呼叫 但函式又会执行 要怎麽做呢??
这时候就可以用立即函式

立即函式(IIFE) 本身也是表达式
MDN: https://developer.mozilla.org/zh-TW/docs/Glossary/IIFE


// 立刻执行
// 无法在函式外被再次执行
(function IIFE(){
    console.log('立即函式',IIFE);
}())
 console.log(IIFE); // IIFE is not defined

当然我们也可以不用给予函式名称

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

// 小括号也可以放外面
(function (){
    console.log('立即函式');
})();

立即函式还有一个作用
就是限制变数的作用域

(function (){
    var dog = '小黑'
    console.log(dog);
})();
console.log(dog); // dog is not defined

立即函式传参数

(function (hello){
    console.log(hello);
})('你好');

// 由於立即函式本身也是函式表达式
// 所以会回传值

var world = (function (hello){
    console.log(hello);
    return hello;
})('你好');
console.log(world);

立即函式内容传到另一个立即函式内


var a = {};
(function (b){
    b.person = '小明'
})(a);

// 要记得补上分号 因为不符合ASI规则

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


立即函式透过全域物件(wimdow)来传递值
通常运用在大型框架上


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

(function (){
    console.log(person); // 小明
})();


那今天的介绍就到这里
若有任何问题 或 内容有误
可以跟我说唷/images/emoticon/emoticon41.gif


<<:  Day40. 范例:假期规划 (建造者模式)

>>:  将Word(Excel)内容汇出成SVG

[今晚我想来点 Express 佐 MVC 分层架构] DAY 29 - node.js 与线程 (下)

上一篇提到有工具可以做到丛集 (Cluster) 的功能,以使用多线程,今天就要来简单介绍一下这个强...

Day 10:新手杀,谁来教我离开 vim 阿~~

前面 9 天都在介绍操作环境,今天终於要进到编辑器啦!我选用的编辑器是 nvim,但是如果你要用 v...

Day18 随机森林法实作

https://github.com/PacktPublishing/Machine-Learni...

Day 5:口罩即时库存开放资料

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...

OSI 模型,教科书中的框架

今天来看看 TCP/IP 之後所提出,有着更完善架构的 OSI,到底有哪些规范吧! OSI 七层 O...