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,正好可以列印兩個字元,如果這個時候有新的字元傳過來,那...