JavaScript 数据类型

1. 简述

JavaScript 拥有7种数据类型,具体如下:

  • 基本数据类型:字符串、数字、布尔、null、undefined、Symbol
  • 引用数据类型:数组、对象

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

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

2. 基本数据类型

2.1 字符串

字符串是存储字符(比如 "Bill Gates")的变量。

字符串可以是引号中的任意文本。您可以使用单引号或双引号:

var carname = "Volvo XC60";
var carname = 'Volvo XC60';

您可以在字符串中使用引号,只要不匹配包围字符串的引号即可:

var answer = "It's alright";
var answer = "He is called 'Johnny'";
var answer = 'He is called "Johnny"';

2.2 数字

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

var x1 = 34.00;      // 使用小数点来写
var x2 = 34;         // 不使用小数点来写

极大或极小的数字可以通过科学计数法来书写。

var y = 123e5;      // 12300000
var z = 123e-5;     // 0.00123

2.3 布尔

布尔只能有两个值:true 或 false。

var x = true;
var y = false;

2.4 null 和 undefined

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

2.5 Symbol

Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。两个Symbol值比较,是不相等的。

var s1 = Symbol()
var s2 = Symbol()
console.log(s1 == s2) // false

Symbol函数可以接收字符串作为一个参数,表示对Symbol值的描述,主要是为了区分。

var s1 = Symbol('Symbol')
var s2 = Symbol(123)

console.log(s1) // Symbol(Symbol)
console.log(s2) // Symbol(123)

有时,我们希望重新使用同一个 Symbol 值,Symbol.for方法可以做到这一点。Symbol.for方法是全局的。下面代码中,s1和s2都是 Symbol 值,但是它们都是同样参数的Symbol.for方法生成的,所以实际上是同一个值 ,Symbol值参数是描述。

var s1 = Symbol.for(123)
var s2 = Symbol.for(123)
console.log(s1 == s2)

Symbol.keyFor方法返回一个已登记的 Symbol 类型值的key描述。下面代码中,获取出来的是描述,是字符串类型。不管Symbol值的参数是什么,获取出来的都是字符串类型。而且只能获取登记过的Symbol值。

var s2 = Symbol.for(123)
console.log(Symbol.keyFor(s2)) // 123 

var s1 = Symbol(123)        
console.log(Symbol.keyFor(s1)) // undefined

Symbol值作为对象的属性名的几种方法。

var s1 = Symbol(123)
var obj = {}
obj[s1] = 123
console.log(obj)  // {Symbol(123): 123}

var json = {
    [s1] : 123
}
console.log(json) // {Symbol(123): 123}

之所以要使用[]括号,是因为要把Symbol值当做一个变量解析。如果不写[]括号的话,会被当作一个字符串。

3 引用数据类型

3.1 数组

创建名为 cars 的数组,共有3种方式:

// 第一种
var cars = new Array();
cars[0] = "Saab";
cars[1] = "Volvo";
cars[2] = "BMW";

// 第二种
var cars = new Array("Saab","Volvo","BMW");

// 第三种
var cars = ["Saab","Volvo","BMW"];

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

3.2 对象

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义,属性由逗号分隔。

var person = {firstname:"John", lastname:"Doe", id:5566};

上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。

空格和换行无关紧要。声明可横跨多行:

var person = {
    firstname : "John",
    lastname : "Doe",
    id : 5566
};

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

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

 

你可能感兴趣的:(H5)