数字
JavaScript中没有整数和浮点数之分,均为浮点数。
NaN和任何数都不相等,包括自身。
- 包括JavaScript在内的多数编程语言,采用二进制浮点数,能够精确表示1/2、1/1024等分数,但不能精确表示类似0.1等的数字。通常计算结果能够满足大多数要求,只是在判断==时可能会返回false。
字符串
字符串中的字符采用Unicode字符集,常用的Unicode字符由16位的内码表示,代表字符串中的单个字符。有些使用两个16位值来表示一个字符,例如e。字符串的长度是指这样的16位值的个数。
JavaScript中的字符串是固定不变的,可以看做一个只读数组,通过下标来访问。所有的方法返回的都是一个新字符串,原来的字符串并没有发生改变。
布尔值
- JavaScript中所有的值都可以转换成布尔值。其中所有的对象(数组)都被看做true;以下几个值被看做false:
- undefined
- null
- 0和-0
- NaN
-空字符串 “”
null和undefined
null表示空对象;typeof方法返回object。
undefined表示变量没有初始化;对象的属性、数组元素不存在;函数无返回值时实际上是返回了undefined;引用未提供实参的形参的值也是undefined。typeof方法返回undefined。
对二者使用== 返回true;使用===返回false。
undefined可理解为系统级、出乎意料或类似错误的值的空缺;null是程序级、正常的或在意料中的值的空缺。若想将他们赋值给变量或属性,或作为参数传入函数,最佳选择是null。
包装对象
- 在对字符串、数字、布尔值这三类原始值进行属性和方法访问的时候,会将其转换为一个临时的包装对象,访问完毕即销毁。可通过new显示创建包装对象,使用==时原始值和包装对象返回true,而使用===则返回false。
- 对包装对象使用typeof运算符返回object。
原始值和对象的区别
原始值(null、undefined、string、number、boolean)都是不可改变的,例如string的相关方法看起来改变了字符串的值,实际上是返回了一个新的字符串,原来的字符串并没有改变。
类型转换
当JavaScript期望使用布尔值、字符串、数字时,给定任意类型的值都会自动转换为期待类型的值。当无法转换为数字时返回NaN。
可通过Boolean()、Number()、String()、Object()进行显示的类型转换。
将null和undefined用在期待使用对象的地方会报错TypeError。而使用了Object()则会返回一个空对象。
除了null和undefined外的任何值都有toString()方法,其返回值与String()方法的返回值一样。
会进行隐式类型转换的运算符:+(字符串),!(布尔值)。
字符串和数字的相互转换方法:
toString(); parseInt()、parseFloat();
数字的相关方法:
toFixed()、toExponential()、toPrecision().