Skip to content

Instantly share code, notes, and snippets.

@pradeepsng30
Last active March 30, 2021 07:21
Show Gist options
  • Save pradeepsng30/dc6eebebfe1f41af6ef5d4ea6d106482 to your computer and use it in GitHub Desktop.
Save pradeepsng30/dc6eebebfe1f41af6ef5d4ea6d106482 to your computer and use it in GitHub Desktop.
JS learnings
var add = function(a){
return function(b){
if(b==undefined) return a;
return add(a+b);
}
}
//https://medium.com/@dange.laxmikant/simplified-inheritance-in-js-es5-way-60b4ff19b008
var Person = function(name, age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
let mya= new Person('name', 23);
console.log(mya);
console.log(mya.getAge())
var Emp = function(eid, name, age){
Person.call(this, name, age);
this.eid = eid;
}
Emp.prototype = Object.create(Person.prototype);
Emp.prototype.constructor = Emp;
let myb = new Emp(1,'mkl',78);
console.log(myb);
console.log(myb.getAge())
console.log(Emp.prototype.constructor);
// Basically, when Javascript compiles all of your code, all variable declarations using var are hoisted/lifted to the top of their functional/local scope (if declared inside a function) or to the top of their global scope (if declared outside of a function) regardless of where the actual declaration has been made. This is what we mean by “hoisting”.
// Functions declarations are also hoisted, but these go to the very top, so will sit above all of the variable declarations.
// Enough talk, lets show you some basic examples of code to demonstrate the impact of hoisting.//
//https://medium.com/javascript-in-plain-english/https-medium-com-javascript-in-plain-english-what-is-hoisting-in-javascript-a63c1b2267a1
console.log(myName); // undefined //no error
var myName = ‘Pradeep’;
///// next file ////
(function() { //IIFE
theHero(); //Arrow
return;
function theHero() {
console.log("Arrow");
}
})();
//----> is changed to
(function() {
function theHero() { //function declaration is hoisted
console.log("Arrow");
}
theHero(); //Arrow
return;
})();
///////////// other file //////////
//Only a function created with a function declaration is hoisted. The function in return function fn2(){}; is created with a (named) function expression so is not hoisted.
var a = 0;
function b(){
a= 2;
function a(){ // . this function named is hoisted above (at start of this function)
return 1;
}
console.log('inside',a) // 2
}
b();
console.log(a) // 1
// with return ///
var a = 0;
function b(){
a= 2;
return function a(){ //not hoisted
return 1;
}
}
b();
console.log(a) // 2

JS learnings

things to note in JS while learning them. putting from my private notes to public gist.

TODO

  • hoisting
  • Scope of var
  • inheritence in es5
  • currying
  • setTimeout

to study : Named function expressions demystified

//https://medium.com/@naveenkarippai/scoping-and-hoisting-in-javascript-2c2e82107427
/**
In JavaScript, variables declared (using var keyword) are function-level scoped. The block-level scoping with loops and conditionals ( if,for, while, switch blocks) don’t delimit the scope.
**/
var hero = "Batman";
if(true) {
var hero = "The Flash";
}
console.log(hero); // "The Flash"
///////////////// other file///////
var hero = "Batman"; //global scope
console.log(hero); //Batman
(function() { //IIFE
if(true) {
var hero = "The Flash"; //local scope
console.log(hero); //The Flash
}
})();
console.log(hero); //Batman
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment