JavaScript-де қасақана және жартылай функцияларды пайдалану керек

Мен Доктор Доббқа JavaScript-дегі карифлинг және жартылай функциялар туралы осы жіберілуін оқимын. Бұл пайдалы көрінеді, бірақ мен оны үнемі қолданатын стандартты жағдайлар болған жағдайда (JavaScript-де кездейсоқ әзірлеуші ​​ретінде) қызықтырамын.

4
Currying функционалды бағдарламалаудан алынады. Функция құрамын қолданғыңыз келгенде оны пайдаланыңыз. Ішінара қолдану императивті программалаудың бөлігі болып табылады, онда көп аргумент функциялары бар. Функцияларды немесе әдістерді мамандандырғыңыз келгенде оны пайдаланыңыз.
қосылды автор ftor, көзі

2 жауаптар

Алғашқылар үшін мен 99% жағдайда кардионды ұсынбаймын. Егер дұрыс пайдаланылмаса, ол кодты оқуға оңай.

Дегенмен, мен атауға болатын кейбір қосымшалар функцияның контекстін орнатумен байланысты болады. Мысалы, контекстен (терезе нысаны және т.б. басқалардан басқа) currying функциясын бірінші рет орындаған кезде, сіз кейінірек қоңырау шалған бастапқы нысан қасиеттерінде белгілі бір есептеулерді қолданатын функцияға ие бола аласыз.

Екінші жағдай, мысалы, сізде үш дәлел қабылдайтын функция бар. DOM элементі, төлсипат атауы және оның мәні. Бұл тиісті элементпен бастай алатын currying функциясына айналдырылуы мүмкін, содан кейін әрбір келесі орындау сізге қажетті мәнге төлсипатты орнатады. Атрибуттар тәуелді болатын көптеген шарты бар жағдайларда пайдалы болуы мүмкін.

3
қосылды

Өте әдеттегі сценарий оқиғалар өңдегіштерін жасау кезінде.

Мысалы, сізде келесідей сілтемелер бар құжат бар дейді:

    link

Say you want to have JavaScript go through and make all these links display a "You are now going to: <link_url>" dialog box on click. In that case, you could use code such as:


    var links = document.getElementsByTagName("a"), len = links.length;
    for (var n = 0; n < len; ++n) {
        links[n].onclick = window.alert.bind(null, "You are now going to: " + links[n].innerText);
    }

Function.prototype.bind() (which I use on window.alert()) is very similar to the partialApply() used in the article that you link.

Бұл мысалдың өзі практикалық болмаса да, ол кеңінен таралған тапсырмадан алыс: Пайдаланушы үшінші жақтың веб-сайтына әкелетін сілтемеге нұқу кезінде растау жолағын көрсету.

Енді window.alert.bind (...) орнына біз анонимді функцияны қолданған болар едік:


    links[n].onclick = (function(text) {
        return function() { window.alert(text); };
    })("You are now going to: " + link[n].innerText);

Бірақ бұл әлдеқайда көп код! Көптеген мысықтарды мысалға келтіріп, «жеңілдетілген» мысал келтіреді, сондықтан ол әдетте өте ыңғайлы болса да, тек қысқа жол ретінде қызмет етеді.

3
қосылды
Бұдан әрі осы техниканы зерттейтін толық кодқа рақмет.
қосылды автор conrad carter, көзі