javascript JS__closers

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript JS__closers相关的知识,希望对你有一定的参考价值。

/* (box) — объект, внутренние значения которого могут быть
считаны и обновлены: */

/* Функции, отслеживающие
переменные в содержащих эти переменные областях ви-
димости, и называются замыканиями (closures) */

/**/
function sandwichMaker(magicIngredient) {
    return function(filling) {
        return magicIngredient + " and " + filling;
    };
}
/**/


function box() {
    var val = undefined;
    return {
        set: function(newVal) { val = newVal; },
        get: function() { return val; },
        type: function() { return typeof val; }
    };
}
var b = box();
b.type(); // "undefined"
b.set(98.6);
b.get(); // 98.6
b.type(); // "number"
/* В этом примере создается объект, в котором содержатся
три замыкания — это его свойства set (установить), get
(получить) и type (определить тип). Каждое из этих замы-
каний имеет доступ к общей переменной val. Замыкание
set обновляет значение переменной val, а последующие
вызовы get и type позволяют увидеть результат обнов-
ления. */


/* 
Чтобы понять суть замыканий, от вас требуется знать три основных факта. 

ВКРАЦИИ
 Функции могут ссылаться на переменные, определенные во внешней области видимости.
 Замыкания могут пережить создавшую их функцию.
 Замыкания хранят внутри себя ссылки на свои внешние переменные, они 
способны как читать, так и обновлять эти свои переменные.

ПОДРОБНЕЕ
Первый заключается в том, что JavaScript позволя-
ет ссылаться на переменные, определенные за пределами
текущей функции:

Второй факт заключается в том, что функции могут
ссылаться на переменные, определенные во внешних
функциях, даже после выхода из этих внешних функций! 
Это означает, что вы можете возвращать
внутреннюю функцию для ее последующего вызова:


Третий и последний касающийся замыканий факт, о ко-
тором нужно знать, заключается в том, что они могут
обновлять значения внешних переменных. На самом деле
в замыканиях хранятся ссылки на их внешние перемен-
ные, а не копии этих переменных. Поэтому обновленные
переменные становятся видимыми для любых замыка-
ний, которые имеют к ним доступ.

*/

以上是关于javascript JS__closers的主要内容,如果未能解决你的问题,请参考以下文章

javascript JS__array_random.js

javascript JS__ASYNC_DEFER.js

001_JS基础_JavaScript简介

javascript js_functions __ $ _ GET

javascript js_functions __ $ _ GET

javascript JS__zamblkaniya