值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

数据类型 - 图1
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

动态类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

  1. var x; // x 为 undefined
  2. var x = 5; // 现在 x 为数字
  3. var x = "John"; // 现在 x 为字符串

变量的数据类型可以使用typeof操作符来查看:

  1. typeof "John" // 返回 string
  2. typeof 3.14 // 返回 number
  3. typeof false // 返回 boolean
  4. typeof [1,2,3,4] // 返回 object
  5. typeof {name:'John', age:34} // 返回 object

字符串

字符串是存储字符(比如 “Bill Gates”)的变量。
字符串可以是引号中的任意文本。使用单引号或双引号:

  1. var carname="Volvo XC60";
  2. var carname='Volvo XC60';
  3. // 可以在字符串中使用引号,只要不匹配包围字符串的引号即可:
  4. var answer="It's alright";
  5. var answer="He is called 'Johnny'";
  6. var answer='He is called "Johnny"';

数字

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

  1. var x1=34.00; //使用小数点来写
  2. var x2=34; //不使用小数点来写
  3. // 极大或极小的数字可以通过科学(指数)计数法来书写:
  4. var y=123e5; // 12300000
  5. var z=123e-5; // 0.00123

布尔

布尔(逻辑)只能有两个值:true 或 false。

  1. var x = true;
  2. var y = false;

数组

下面的代码创建名为 cars 的数组:

  1. var cars=new Array();
  2. cars[0]="Saab";
  3. cars[1]="Volvo";
  4. cars[2]="BMW";
  5. // 或者 (condensed array):
  6. var cars=new Array("Saab","Volvo","BMW");
  7. // 或者 (literal array):
  8. var cars=["Saab","Volvo","BMW"];

数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。

对象

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
var person={firstname:"John", lastname:"Doe", id:5566};
上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。
空格和折行无关紧要。声明可横跨多行:

  1. var person={firstname:"John", lastname:"Doe", id:5566};
  2. // 多行
  3. var person={
  4. firstname : "John",
  5. lastname : "Doe",
  6. id : 5566
  7. };

对象属性有两种寻址方式:

  1. name=person.lastname;
  2. name=person["lastname"];

Undefined 和 Null

Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
cars=null;

声明变量类型

当您声明新变量时,可以使用关键词 “new” 来声明其类型:

  1. var carname = new String;
  2. var x = new Number;
  3. var y = new Boolean;
  4. var cars = new Array;
  5. var person = new Object;