1、变量的声明:

var a;     //声明了变量,但未赋值,此时变量的值为undefined

var a,b,c;   //同时声明多个变量

var a=100;   //声明的同时初始化变量

var a=100,b=1000,c=10000;

2、在函数内的变量如果没有用var进行声明,则此变量就为全局变量,即使函数体外没声明过这个变量(因为系统会自动进行隐式声明)。如果函数体中还嵌套有其他函数,则上层函数中的变量对下层函数来说是有作用域的。要想在函数中屏蔽上层的变量,可以使用var对上层中已经拥有的变量进行再声明,则此变量就变为该函数的私有变量。

3、在函数中声明的变量,无论是在哪里声明的,在整个函数中都是有定义的,如:

var a=10;
  function a(){

      alert(a);    //此处a的值并不是10,它并不是全局变量,因为后面又重新用var声明了a,所以此时a已经是函数的私有变量了,所以说即使是在后面才声明的var a=20,但它在整个函数中都是有定义的,只不过在执行var 语句之前它的值是undefined,所以此时a的值为undefined。

var a=20; 
alert(a);
}

4、读取一个未声明的变量时系统会报错,但当给一个未事先声明的变量赋值时不会出现错误,因为系统会在全局作用中隐式的声明它。在函数的嵌套函数中未用var声明的变量也会成为全局函数。

5、js的全局变量其实是js的最顶层对象window的一个属性,不在函数体中的this引用的就是window这个全局对象。当然函数体中的this就另当别论了。

6、全局变量时特殊的全局对象的属性,同理局部变量也是一个对象的属性,这个对象被称为调用对象。在执行一个函数时,函数的参数和局部变量是作为调用对象的属性而存储的,这个调用对象是系统自动创建的,所以它的生命周期是比较短的。