說一說JS的IIFE

2021-09-22 12:25:36 字數 1277 閱讀 8038

iife: immediately invoked function expression,意為立即呼叫的函式表示式,也就是說,宣告函式的同時立即呼叫這個函式。

對比一下,這是不採用iife時的函式宣告和函式呼叫:

function foo())(window);

console.log(a); // 2

js的模組就是函式,最常見的模組定義如下:

function mymodule(){

var something = "123";

var otherthing = [1,2,3];

function dosomething(){

console.log(something);

function dootherthing(){

console.log(otherthing);

return {

dosomething:dosomething,

dootherthing:dootherthing

var foo = mymodule();

foo.dosomething();

foo.dootherthing();

var foo1 = mymodule();

foo1.dosomething();

如果需要乙個單例模式的模組,那麼可以利用iife:

var mymodule = (function module(){

var something = "123";

var otherthing = [1,2,3];

function dosomething(){

console.log(something);

function dootherthing(){

console.log(otherthing);

return {

dosomething:dosomething,

dootherthing:dootherthing

mymodule.dosomething();

mymodule.dootherthing();

iife的目的是為了隔離作用域,防止汙染全域性命名空間。

es6以後也許有更好的訪問控制手段(模組?類?),有待研究。

1ben alman, 「immediately-invoked function expression (iife)「.

2kyle simpson, you don』t know js:scope & clouses (, 2014).

**

說一說JS的IIFE

iife immediately invoked function expression,意為立即呼叫的函式表示式,也就是說,宣告函式的同時立即呼叫這個函式。對比一下,這是不採用iife時的函式宣告和函式呼叫 function foo foo 下面是iife形式的函式呼叫 functionfoo 函...

簡單的說一說mmap

mmap memory map,就是記憶體對映 簡單的說就是將檔案對映到使用者的位址空間中。這麼做有什麼好處呢?1.傳統檔案訪問方式是,首先用open系統呼叫開啟檔案,然後使用read,write等呼叫進行順序或者隨即的i o.這種方式是非常低效的,每一次i o操作都需要一次系統呼叫.而通過mmap...

說一說 r與 n

今天在用python讀取txt檔案的時候,遇到了乙個比較坑的問題,那就是 n 和 r 究竟有什麼區別?在計算機還沒有出現之前,人們設計了一種機器叫做電傳打字機,這種機器每秒鐘可以打10個字元。不過它有個問題,就是打完一行換行的時候,需要0.2s,正好可以列印兩個字元,如果這個時候有新的字元傳過來,那...