javascript学习(2)——变量

1、javascript的变量是非类型的,可以存放任何类型的数据,可以自动地将一种类型转换成另一种类型。

 

2、变量的声明:var sum;

      变量的定义:var sum = 0;

      变量声明了还没有赋值之前,初始值为undefined。

      对于javascript来说,重复声明不会造成任何错误;尝试读一个未声明的变量会报错;尝试给未声明的变量赋值,会隐式声明该变量且创建为全局变量。

 

3、变量的作用域

      全局变量:在javascript代码中处处有定义,可以用var也可以不用var声明;

      局部变量:在函数内声明的变量,一定要用var来声明;

      在函数体内,局部变量的优先级高于同名全局变量。

 

4、javascript没有块级作用域的概念

      函数中声明的所有变量,在整个函数中都有定义。如下面的例子,i和j在函数test中均有定义,但可能没有值。

   function test()
   {
     var i = 0;
     if (true)
     {
        var j = 0;
        document.write(j); //j为0
     }
     document.write(j);  //j的定义仍然存在,但可能没有值
   }


       另外,由于局部变量会屏蔽全局变量,所以在函数内局部变量未定义前就先使用局部变量,会被认为找不到该局部变量。

 

5、基本类型和引用类型

      基本类型:数字、布尔值、null、undefined

      引用类型:对象、数组、函数

      字符串有些特殊,兼有基本类型和引用类型的特征

 

6、垃圾收集器

      javascript也存在垃圾收集器,其原理和java的垃圾收集器相同

 

7、作为属性的变量

      变量和对象的属性是一样的。

      全局对象:javascript解释器执行时,会创建一个全局对象。而声明一个javascript全局变量就是定义了这个全局对象的一个属性。在程序的顶层代码(不属于函数的js代码),this关键字可以引用全局对象(函数内部,this有别的用途),如window对象。

      局部对象:执行一个函数时,函数的参数和局部变量就是局部对象。

 

8、javascript的执行环境

      是在javascript解释器每次开始执行一个函数时创建的,分为全局执行环境和局部执行环境。全局执行环境可以有多个,在多个窗口或帧中存在。各个全局执行环境有自己的全局对象。各个全局执行环境中的全局对象可以互相引用(parent.frames[1].xxx)。

 

9、深入理解变量作用域

      每个javascript执行环境都有一个和它关联的作用域链,它是一个对象列表或对象链。javascript代码查找某个变量时,就在对象链中从下往上(从局部变量到全局变量)查找该变量,找到就用该变量的值。

阅读更多
个人分类: javascript
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭