Scoping of variables in Javascript
satya - 4/21/2014 10:44:34 AM
Little bit of research on this and that in javascript
satya - 4/21/2014 10:44:48 AM
Scoping of variables in Javascript
Scoping of variables in Javascript
satya - 4/21/2014 11:08:33 AM
Variable outside of any function is a global variable
var xyz = "Global";
xyz = "Global as well";
function f()
{
    var xyz = "local, overrides the global one";
    var abc = "local. Not seen outside of the function";
    abc = "Global again, but available only after f() is called once";
    for (....)
    {
       var blah = "No such thing as block level scope but only function level";
    }
}
satya - 4/21/2014 11:09:17 AM
Not having a var against a variable ...
Makes the variable scope walk up the chain and declare it globally....
satya - 4/21/2014 11:12:55 AM
Hoisting: Definitions are automatically moved to the top of the scope
//call f()
f();
//define f() later
function f() {}
//becomes
//define f() later
function f() {}
and
f();
satya - 4/21/2014 11:14:58 AM
another
alert(helloVariable);
var helloVariable = "xyz";
//becomes
var helloVariable;
alert(helloVariable);
helloVariable = "xyz";
satya - 4/21/2014 11:16:31 AM
ECMA script introduced block level scoping through let and const
ECMA script introduced block level scoping through let and const
Search for: ECMA script introduced block level scoping through let and const
satya - 4/21/2014 11:31:47 AM
Public and private variables
function f()
{
  var abc; //private
  this.xyz; //public member available outside through new
}
satya - 4/21/2014 11:36:11 AM
Private members are not accessible to public methods unlike oo languages!!!
function f()
{
  var abc; //private
  this.xyz; //public member available outside through new
  var function privatef() 
  {
     //private function
     //can use abc and xyz
  }
  this.publicfunc = function publicf() 
  {
     //public function
     //cannot see private varilabe abc????
  }
}
satya - 4/21/2014 11:39:02 AM
This can be overcome by creating a public variable pointing to this
function f()
{
  var abc; //private
  this.xyz; //public
  this.that = this; //trozan horse
  this.publicfunc = function publicf() 
  {
     //public function
     //cannot see private varilabe abc????
     //Now it can
     console(that.abc);
  }
  
}
satya - 4/21/2014 11:46:47 AM
So in Javascript objects remember that there are..
Private variables
Private functions
Public variables
Public functions
Public functions that get privileged through the "that" variable