Skip to main content

What is a “closure” in JavaScript?

What is a “closure” in JavaScript?

A closure is a function having access to the parent scope, even after the parent function has closed.

const add = (()=> {
  var counter = 0;
  return function () {
    counter += 1;
    return counter;

console.log(add())  //1
console.log(add())  //2

Describe event driven and asynchronous programming, and why it is important in User Interface Javascript?

event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs or threads., handling of events can either be synchronous or asynchronous. 

Asynchronous programming in JavaScript offers a great way of handling operations (I/O) that are not immediately executed and therefore have no immediate response. Rather than waiting for long-running operations to return, blocking the execution thread in the process, they are delegated to callbacks, which are functions that are called when these operations finally return.

Asynchronous programming makes it possible to have many input/output operations, all happening at the same time. For JavaScript, this is made possible via the event loop, the call stack, and async APIs like callbacks.

Describe a “promise” and how they work, and what are the advantages and disadvantages to them?

Promises are one of the ways we can deal with asynchronous operations in JavaScript
Promises in JavaScript
First of all, a Promise is an object. There are 3 states of the Promise object:

Pending: Initial State, before the Promise succeeds or fails
Resolved: Completed Promise
Rejected: Failed Promise

There are a number of advantages when it comes to Promises over Callbacks. The most prominent is that they are composable, unlike callbacks. This is the reason you can avoid callback hell with it.

Of course, nothing comes for free. Just like everything else, Promises also have disadvantages. Probably the most common problem is that they are not available in older browsers. They have to be polyfilled. However, global adaptation is wide. As of writing this article, it’s around 94%.
Believe it or not, because of the way they work, they are also slower than traditional callbacks. And they can only operate on a single value at a time. Yet because of their composability, they are a better choice to callbacks.

What is two-way data binding and one-way data flow, and how are they different?

Two way data binding means that UI fields are bound to model data dynamically such that when a UI field changes, the model data changes with it and vice-versa. One way data flow means that the model is the single source of truth.

Name two programming paradigms important for JavaScript app developers?

The two paradigms often used are object-oriented programing and functional programing

Describe GraphQL and how it works

GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data.

With GraphQL, the user is able to make a single call to fetch the required information rather than to construct several REST requests to fetch the same.


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 } ),