百良西瓜

导航

类型

1.  JavaScript 的类型分为两类:原始类型(primitive type)和对象类型(object type)。

原始类型包括:数字、字符串、布尔值

2.  JavaScript 中有两个特殊的原始值:null  和  undefined,它们不是数字、字符串和布尔值,它们分别代表了各自特殊类型的唯一成员。

  null 是 JavaScript 的关键字,常用来表示“空值”。执行 “typeof null” 会返回 “object”。

  undefined 和 null 不一样,不是关键字,是预定义的全局变量。执行 “typeof undefined” 会返回 “undefined”。

    1)当变量未初始化时,会返回 "undefined"

    2)当查询的对象属性 或者 数组元素不存在时,会返回 "undefined"

    3)当函数没有return语句时,会返回 "undefined"

3.  类型转换

  使用 ”==“ 进行比较的时候,JavaScript 会根据两个值的语义进行隐式类型转换,以下转换规则,

  以下图片截取自《JavaScript: The Definitive Guide  6th Edition》,

  

4.  相等性测试

  null == undefined  // 返回 true

  null == false     // 返回 false

  undefined == false  // 返回 false

  "0" == 0       // 返回 true

  0 == false      // 返回 true

  "0" == false     // 返回 true

  一个值可以转换为另一个值,并不意味着两个值相等。比如,上面红色的相等性测试。

5.  变量声明

  1)使用 var 关键字声明变量,例如 var i;  var j = 22; 重复声明同一变量没有害处,解析器默认使用最后一个。 

  2)当不使用 var 声明变量时,变量默认会成为 全局对象如果是客户端浏览器,那么全局对象就是 window)的属性。

6.  变量作用域

  全局变量拥有全局作用域。

  JavaScript 函数体内声明的变量存在于函数体内的任何地方,这一点与 C、C++、Java不同。例如 C 语言,      

void print()
{
    for(int i = 0; i < 100; i++)
    {
         printf("%d", i);
    }

    // 此处再也无法访问变量 i
}

  而 JavaScript 函数依旧可以访问,

function print() {
    for(int i = 0; i < 100; i++) {
         console.log("i = " + i);
    }
   console.log("i = " + i); // i 可以正常访问,打印出 100
}

  JavaScript 解释器解析函数的时候,会把函数体内声明的所有变量,全部提到函数开始处,如下

  

  

 

posted on 2015-11-25 13:30  百良西瓜  阅读(192)  评论(0编辑  收藏  举报