Skip to main content

Understanding Code Execution in Javascript

If you are doing any form of programming in Javascript then understanding its eventloop is very important.

Any javascript engine has three kinds of memory models:


  1. Stack, which has the current function pointer an gets executed sequentially.
  2. Heap, this stores all the objects, functions basically anything that is initiated is stored here.
  3. Queue, all things to be executed is stored here and stack picks up tasks to do from the queue.
So, to understand this further, when a function is getting executed its loaded in the stack and if it encounters any setTimeouts then it would be added in the queue and when the current stack gets empty then the new function to be executed from the queue.

This code run will explain the process:

console.log("Add this code to queue");

setTimeout(function() {                                                //This goes and sits in the queue.
                           console.log("Running next event from the queue.");
                 },0);

function a(x) {
     console.log("Function a added to the stack!");
     b(x);
     console.log("Function a removed from the stack!");
}

function b(x) {
      console.log("Function b is added to the stack.");
      console.log("Value passed is "+x);
      console.log("Function b is removed from the stack.");
}

console.log("starting work for this stack");
a(22);
console.log("Stopping work for this stack. stack would be empty after this.");


The output of this code is self explanatory:


Add this code to queue 
starting work for this stack 
Function a added to the stack! 
Function b is added to the stack. 
Value passed is 22 
Function b is removed from the stack. 
Function a removed from the stack! 
Stopping work for this stack. stack would be empty after this. 
Running next event from the queue. 


So what happened here?
Stack is initialized with current code.
Only thing to notice is that at setTimeout call anonymous function is added to the queue. //Remember closures.
Then the function a is added to the heap.
Then function b is added to the heap.
a is called that means from heap function a is loaded on the stack.
b is called that means from heap function b is loaded on the stack.
b is removed from the stack.
a is removed from the stack.
current code execution gets over, stack becomes empty.
next execution is loaded on the stack from the queue.

This should help one understand how JS memory model works

Popular posts from this blog

Watch Live cam on Google!!!!!

Ahhh!!! type certain string in google search bar above and it would bring up the network live cam into your browser. These can be anything from CCTV or webcams... There are lots of string.. i suggest a few down below use them to begin with.. And do come up with your own.. and leave a comment to the post... And ya.. if u come up with something interesting then don forget to share it.. Strings::: Axis cameras: "adding live video to one of your own pages a very easy task with an AXIS 2100 Network Camera" ' google ' intile:"Live view - / - AXIS" ' google ' "Your browser has JavaScript turned off.For the user interface to work effectively" ' google ' inurl:indexFrame.html axis ' google ' "Live web imaging unleashed" ' google ' MOBOTIX cameras: (intext:"MOBOTIX M1" | intext:"MOBOTIX M10") intext:"Open Menu" Shift-Reload ' google ' JVC cameras: "(c)copyright 199...

Problems with mysql.sock

Sometimes while working on Linux, mysql.sock may get deleted by mistake due to some softwares.. in such cases any access to mysql wont be possible as the sock file defines the socket connection for mysql. It will give an error of the following type: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) In such cases follow these steps to reconfigure mysql: Delete the log files with the names: ib_logfile0, ib_logfile1 and ibdata1 in the /var/lib/mysql directory Then type: "mysqld_safe --user=mysql &" This will automatically create mysql.sock file and even the new logs files. This is a very simple solution which I used recently and decided to share with you people.

Universal Xp serial key

The key given below is the universal serial key for Windows Xp.. It can by pass any windows xp cd and make your copy genuine. Do try it!!! V2C47-MK7JD-3R89F-D2KXW-VPK3J