閉包的應用(私有變數 珂理化 偏函式)

2022-08-17 04:18:14 字數 1640 閱讀 5464

const countmodule = (function () 

function tozero()

return

})();

countmodule.addcount(); // 1

countmodule.addcount(); // 2

countmodule.addcount(); // 3

countmodule.tozero(); // 0

countmodule.addcount(); // 1

countmodule.addcount(); // 2

countmodule.addcount(); // 3

const mynamemodule = (function () 

function setname(value)

return

})();

mynamemodule.getname(); // 'mike'

mynamemodule.setname('helen'); // 'helen'

const user = (function () 

login() , 密碼:$`);

}} return user;

})();

let user = new user('mike', 'mike123');

console.log(user.username); // 'mike'

console.log(user.password); // undefined

login(); // 'mike' 'mike123'

柯里化是把接受 n 個引數的 1 個函式改造為只接受 1個引數的 n 個互相巢狀的函式的過程。也就是fn(a, b, c)會變成fn(a)(b)(c)

function personalinfo(school)  年級:$ 專業:$`;}}}

// 生成江蘇師範大學科文學院專屬函式

const schoolname = personalinfo('江蘇師範大學科文學院');

// 記住school,生成學校的年級專屬函式

let gradename = schoolname('大學三年級');

// 記住了school和grade,生成學校對應年級的專業專屬函式

let professionname = gradename('某某專業');

console.log(professionname);

和珂理化的區別是,不再強調單函式。例如1個入參返回2個入參函式。

function personalinfo2(school)  年級:$ 專業:$`;

}}const schoolname2 = personalinfo2('江蘇師範大學科文學院');

let gradeandprofessionname = schoolname2('大學一年級', '設計專業');

console.log(gradeandprofessionname);

JS閉包應用 私有變數 柯里化 偏函式

對於這樣乙個函式 function generate generate作為 高階函式 返回了乙個新的函式,該函式引用了外部作用域中的變數a,於是該函式稱為閉包函式。閉包就是 引用了自由變數的函式。自由變數 指在當前作用域引用但既沒有定義在當前作用域也未定義在全域性作用域,而是定義在外層的區域性作用域...

函式名的應用和閉包

函式名的命名規範和變數是一樣的 函式名其實就是變數 可以作為列表中的元素進行儲存,def func1 pass def func2 pass lst func1,func2 for el in lst el 可以作為引數傳遞給函式 def func pass def proxy fn proxy f...

js必須了解的閉包私有化變數原理

閉包的私有化變數 function person offer function 此時的person裡面只有兩個方法,如果想通過person訪問money是訪問不到的,如果你想通過方法呼叫來訪問 person.makemoney.money 就會返回 uncaught typeerror cannot...