Primitive与Object有一个泾渭分明的特性:所有的Primitive都是Immutable的,所有的Object都是Mutable的。以String类型为例,调用String的方法对其进行编辑后,JavaScript会将编辑后的结果保存在一个新的String对象中,原String对象不会有任何改变: 复制代码 代码如下: var s = "test"; s.toUpperCase();//return a new String object "TEST" console.log(s);//"test" -- original String s does not change
实验
在JavaScript中,可以通过使用typeof关键词来获取某个值的类型。 获取数字的类型: 复制代码 代码如下: var n = 42; console.log(typeof n);
程序输出结果为number。 获取字符串的类型: 复制代码 代码如下: var s = "test"; console.log(typeof s);
程序输出结果为string。 获取布尔值的类型: 复制代码 代码如下: var b = true; console.log(typeof b);
程序输出结果为boolean。 获取null的类型: 复制代码 代码如下: var x = null; console.log(typeof x);
程序本应输出null,但实际上却输出object。原因在于,当对null值使用typeof操作时,程序将返回object:这是自JavaScript第一个版本以来就存在的一个bug。在ECMAScript标准的制定过程中,就是否修复这个bug存在过一些有趣的争论:http://wiki.ecmascript.org/doku.php?id=harmony:typeof_null;最终结论为:修复该bug会给太多的网站带来问题,因此暂不修复。 获取undefined的类型: 复制代码 代码如下: var y = undefined; console.log(typeof y);