Skip to main content

A closure is a persistent local variable scope

Languages which support closure (such as JavaScript, Swift, and Ruby) will allow you to keep a reference to a scope (including its parent scopes), even after the block in which those variables were declared has finished executing, provided you keep a reference to that block or function somewhere.

outer = function() {
  var a = 1;
  var inner = function() {
  return inner; // this returns a function

var fnc = outer(); // execute outer to get inner 
As you might be able to guess, when I call fnc() it prints the value of a, which is "1".
function add (a) {
  return function (b) {
    return a + b;

var add3 = add(3);

add3(4); // returns 7
var add = (function () {
  var counter = 0;
  return function () {counter += 1return counter}


// the counter is now 3


Popular posts from this blog

About GraphQL - Downside

Web caching complexity

File uploading. Since GraphQL doesn’t understand files, a file uploading feature is not included in its specification. You won’t have to deal with this limitation in case of REST, as there you can POST or PUT whatever content you want to.
To allow file uploads in your GraphQL web app, there are several options: using Base64 encoding. But it will make the request larger and expensive to encode/decode.making a separate API endpoint just for this purpose.using a library like Apollo for implementing the GraphQL multipart request specification.uploadFileToS3:combineResolvers( // isAuthenticated, async (parent, args, { models }) => { const { file } = awaitargs const { createReadStream, filename, mimetype, encoding } = awaitfile conststream = createReadStream() constresult = awaituploadFileToS3(filename, stream) returnresult } ),