JavaScript数据类型

JavaScript变量可以hold住各种数据类型:数字,字符串,对象及更多:

var length = 16;                               // 数字
var lastName = "Johnson";                      // 字符串
var x = {firstName:"John", lastName:"Doe"};    // 对象

JavaScript数据类型的概念

在编程中,数据类型是一个非常重要的概念。为了控制好变量,了解数据类型是非常重要的。
离开了数据类型,计算机很难安全的处理这些问题:

var x = 16 + "Volvo";

如果没有数据类型的各项规则,那么数字加一个字符串将会是什么?如果没有一个规则去处理这个问题,那么计算机显然会报错,它无法将一个数字与字符串加到一起得出结果。结果将不会是数字也不是字符串。莫非是数字字符串?别扯了。
因为有了规则,JavaScript将把上面的例子处理成:

var x = "16" + "Volvo"; // 结果是16Volvo

将一个数字与字符串相加时JavaScript将会把数字转换成字符串。
再看一个例子:

var x = 16 + 4 + "Volvo"; //结果是20Volvo

JavaScript是从左到右计算代码的,所以,先计算16+4。由于两个都是数字,会进行加法,得出20,再把20转成字符串与Volvo相加。

var x = "Volvo" + 16 + 4; //结果是Volvo164

JavaScript类型是动态的

JavaScript有动态类型。说白了就是,变量的数据类型可以是多种。

var x;               // undefined(未定义)
var x = 5;           // X是数字
var x = "John";      // X是字符串
JavaScript字符串

关于单引号与双引号的使用:同类型引号不可嵌套。

var answer = "It's alright";             // 一个单引号在双引号里
var answer = "He is called 'Johnny'";    // 一对双引号里有一对单引号
var answer = 'He is called "Johnny"';    // 一对单引号里有一对双引号
JavaScript数字
var x1 = 34.00;     // 有小数
var x2 = 34;        // 没有小数
var y = 123e5;      // 同12300000
var z = 123e-5;     // 同0.00123
JavaScript布尔值
var x = 5;
var y = 5;
var z = 6;
(x == y)       // 返回true
(x == z)       // 返回false

这个布尔值一般用于条件判断。

JavaScript数组

数组会写在方括号里,
通过半角分号分开每个项目。

var cars = ["Saab", "Volvo", "BMW"];

数组的索引是基于0的。意思就是,数组里第一个项目的索引是0,即获取第一个项目的话是cars[0]。那么第二个就是cars[1]。

JavaScript对象

JavaScript对象写在大括号(花括号)里。
跟数组一样,通过半角分号分开每个项目。

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

怎么描述上面的表达式呢?这样描述:
上面有一个对象person,这个对象有4个属性名称:firstName,lastName,age,eyeColor。每个属性名称都有它的值。一个属性名称与其值的组合可以成为属性(其实,在CSS中,这样的一个组合叫声明)。N个属性,用半角逗号分开。

运算符typeof

使用typeof可以查看变量或表达式的类型。

typeof ""                  // Returns "string"
typeof "John"              // Returns "string"
typeof "John Doe"          // Returns "string"
typeof 0                   // Returns "number"
typeof 314                 // Returns "number"
typeof 3.14                // Returns "number"
typeof (3)                 // Returns "number"
typeof (3 + 4)             // Returns "number"
Undefined
var car;  // 值是undefined, 类型是undefined
car = undefined; // 值是undefined, 类型是undefined
空值

空值也是合法的。但是它不同于undefined。

var car;  // 值是undefined, 类型是undefined
var car = ""; // 值是""(引号里的东西,空), 类型是string(字符串)
Null

JavaScript中null是什么都没有的意思,可以想象成根本不存在的东西。
但是,在JavaScript里它的数据类型是对象。至少目前(2018年)大家可以把这个当作是一个bug。null的数据类型应该是null。
例:清空一个对象。

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null;        // 现在值是null, 但是数据类型依然是对象

例:当然,也可以通过undefined来清空一个对象。

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined;   // 现在数据类型和值都是undefined
Null和Undefined的区别
typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true

===之前讲过,这个符号的意思是恒等于。即===两侧的值和数据类型均相等。而==是值相等。单个等号的意义是赋值,而不是比较。需注意。

原始数据

原始数据(Primitive Data)是一个简单的数据,没有附加的属性和方法。

typeof "John"              // Returns "string" 
typeof 3.14                // Returns "number"
typeof true                // Returns "boolean"
typeof false               // Returns "boolean"
typeof x                   // Returns "undefined" (x没有值的情况下)
复杂数据

typeof运算符可以返回两个复杂数据类型中的一个。

typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]             // Returns "object" (不是array,JavaScript中array是对象)
typeof null                  // Returns "object"
typeof function myFunc(){}   // Returns "function"
补充说明:

我们在学习编码时英文关键词也应该要记住。
比如array是数组,object是对象,function是函数,return是返回,string是字符串等等,都需要记住。使用率极高。不要弄到看到了还不知道是什么东西。