JavaScript 数据类型

  • JavaScript数据类型

    JavaScript变量可以包含许多数据类型:数字,字符串,对象等:
    var length = 16;                           // Number
    var lastName = "Johnson";                      // String
    var x = {firstName:"John", lastName:"Doe"};    // Object
  • 数据类型的概念

    在编程中,数据类型是一个重要的概念。为了能够对变量进行操作,了解类型非常重要。没有数据类型,计算机无法安全地解决此问题:
    var x = 16 + "Volvo";
    将“Volvo”跟16相加是否有意义?它会产生错误还是会产生结果?JavaScript会将上面的示例视为:
    var x = "16" + "Volvo";
    数字和字符串相加时,JavaScript会将数字视为字符串。
    var x = 16 + "Volvo";
    尝试一下
    var x = "Volvo" + 16;
    尝试一下
    JavaScript从左到右计算表达式。不同的序列会产生不同的结果:
    var x = 16 + 4 + "Volvo";
    结果为:20Volvo
    var x = "Volvo" + 16 + 4;
    结果为:Volvo164
    在第一个示例中,JavaScript将16和4视为数字,直到达到“Volvo”。在第二个示例中,由于第一个操作数是一个字符串,因此所有操作数都被视为字符串。
  • JavaScript类型是动态的

    JavaScript具有动态类型。这意味着可以使用相同的变量来保存不同的数据类型:
    var x;           // 现在是 undefined
    x = 5;           // 现在是 Number
    x = "John";      // 现在是 String
    尝试一下
    提示:这一点跟一些静态语言不同。比如C语言,声明了某种数据类型的变量,只能保存该类型的数据。
  • JavaScript字符串(String)

    字符串(或文本字符串)是一系列字符,如“John Doe”。字符串是用引号写的。您可以使用单引号或双引号:
    var carName1 = "Volvo XC60";   // 用双引号
    var carName2 = 'Volvo XC60';   // 用单引号
    尝试一下
    您可以在字符串中使用引号,只要它们与字符串周围的引号不冲突(字符串里面有单引号就用双引号来包含,字符串里面有双引号就用单引号来包含):
    var answer1 = "It's alright";        // 双引号内的单引号
    var answer2 = "He is called 'Johnny'";    // 双引号内的单引号
    var answer3 = 'He is called "Johnny"';    // 单引号内的双引号
    尝试一下
    提示:后面的教程会介绍一种转义的方法来解决这个问题。
  • JavaScript数字(Number)

    JavaScript只有一种类型的数字。数字可以用或不用小数来写:
    var x1 = 34.00;     // 小数
    var x2 = 34;        // 没有小数点的数字
    尝试一下
    可以使用科学(指数)表示法编写超大或超小数字:
    var y = 123e5;      // 12300000
    var z = 123e-5;     // 0.00123
    尝试一下
    提示:后面的教程会介绍一种转义的方法来解决这个问题。
  • JavaScript布尔类型(Booleans)

    布尔值只能有两个值:truefalse
    var x = 5;
    var y = 5;
    var z = 6;
    (x == y)       // 返回 true
    (x == z)       // 返回 false
    尝试一下
    提示:布尔值通常用于条件测试。
  • JavaScript数组(Array)

    JavaScript数组用方括号编写。数组项以逗号分隔。以下代码声明(创建)一个名为的数组cars,其中包含三个项目(汽车名称):
    var cars = ["Saab", "Volvo", "BMW"];
    尝试一下
    提示:数组索引从零开始,这意味着第一项是[0],第二项是[1],依此类推。
  • JavaScript对象(Object)

    JavaScript对象用大括号{}编写。对象属性写为name:value对,以逗号分隔。
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
    尝试一下
    上例中的对象(person)有4个属性:firstName,lastName,age和eyeColor。
  • 数据类型操作符(typeof)

    您可以使用JavaScript typeof运算符来查找JavaScript变量的类型。typeof操作符返回一个变量或一个表达式的类型:
    typeof ""             // 返回 "string"
    typeof "John"         // 返回 "string"
    typeof "John Doe"     // 返回 "string"
    尝试一下
    typeof 0              // 返回 "number"
    typeof 314            // 返回 "number"
    typeof 3.14           // 返回 "number"
    typeof (3)            // 返回 "number"
    typeof (3 + 4)        // 返回 "number"
    尝试一下
  • 未定义(undefined)

    在JavaScript中,没有值的变量具有值undefined。类型也是undefined
    var car;    //值是 undefined, 类型也是 undefined
    尝试一下
    通过将值设置为undefined,可以清空任何变量。类型也将是undefined。
    car = undefined;    //值是 undefined, 类型也是 undefined
    尝试一下
  • 空字符串("")

    空字符串与undefined无关,空字符串具有合法值和类型。
    var car = "";    // 值为 "", 类型是 "string"
    尝试一下
  • 空值(null)

    在现实生活中null表示“没有”。它应该是不存在的东西。不幸的是,在JavaScript中,数据类型null是一个对象。
    您可以通过将对象设置为null以下来清空对象:
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
    person = null;    // 现在value为null,但type仍然是一个对象
    尝试一下
    您还可以通过将对象设置为undefined来清空对象:
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
    person = undefined;  //现在值和类型都是undefined
    
  • undefined和null之间的区别

    undefined和null值不相同类型也不同:
    typeof undefined           // undefined
    typeof null                // object
    
    null === undefined         // false
    null == undefined          // true
    尝试一下
  • 原始数据类型

    原始数据类型是单个简单数据类型,没有其他属性和方法。typeof操作符可以返回这些基本类型中的一种:
    • string
    • number
    • boolean
    • undefined
    typeof "John"              // 返回 "string" 
    typeof 3.14                // 返回 "number"
    typeof true                // 返回 "boolean"
    typeof false               // 返回 "boolean"
    typeof x                   // 返回 "undefined" (if x has no value)
    尝试一下
  • 复合数据类型

    typeof操作符可以返回两个复杂类型中的一种:
    • function
    • object
    typeof {name:'John', age:34} // 返回 "object"
    typeof [1,2,3,4]             // 返回 "object"  
    typeof null                  // 返回 "object"
    typeof function myFunc(){}   // 返回 "function"
    尝试一下
    typeof操作符操作数组返回“object”,因为JavaScript数组是对象。