要理解 JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界 只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript 就是把数据和代码都 简化到最原始的程度。

JavaScript 中的数据很简洁的。简单数据只有 undefined, null, boolean, number 和 string 这 五种,而复杂数据只有一种,即 object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为 金木水火土,其他复杂的物质都是由这五种基本元素组成。

JavaScript 中的代码只体现为一种形式,就是 function。

注意:以上单词都是小写的,不要和 Number, String, Object, Function 等 JavaScript 内置函数 混淆了。要知道,JavaScript 语言是区分大小写的呀!

任何一个 JavaScript 的标识、常量、变量和参数都只是 unfined, null, bool, number, string, object 和 function 类型中的一种,也就 typeof 返回值表明的类型。除此之外没有其他类型了。

先说说简单数据类型吧。

undefined:

代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。 注意:typeof(undefined) 返回也是 undefined。
可以将 undefined 赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。

 

null:有 那么一个概念 ,但没有东西 。无中似有, 有中还无。虽 难以想象,但 已经可以用代码来处理了。

注意:typeof(null)返回 object,但 null 并非 object,具有 null 值的变量也并非object。

 

boolean:是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程。

number:线性 的事物,大小 和次序分明, 多而不乱。便 于代码进行批 量处理,也 控制代码的迭代和循环等。

注意:typeof(NaN)和 typeof(Infinity)都返回 number 。 NaN 参与任何数值计算的结构都是 NaN,而且 NaN != NaN 。 Infinity / Infinity = NaN 。

string:面向 人类的理性事 物,而不是机 器信号。人机 信息沟通,代 码据此理解 人的意图等等,都靠它了。

简单类型都不是对象,JavaScript 没有将对象化的能力赋予这些简单类型。直接被赋予简单类型 常量值的标识符、变量和参数都不是一个对象。

所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。JavaScript 中只有 object 类型 和 function 类型提供了对象化的能力。