在JavaScript中
- 使用 0-9 这些数字表示 number
- 使用 “ ” 或者 ' ' 引号括起来的表示 string
- 使用 true或者false 标识 boolean
- function 都是object
- Object 也是 Function
- {} 是 object
我想,前面三点都是非常简单的,数字就是数字,字符就是字符,真假就是真假,在说话,书写,编写任何代码都适用。后面三点,这是在js中独有的味道。
在面向对象的语言中,很多采用的是单根结构[1]。所以说万事万物皆为对象。但是,js虽然是一种面向对象的编程语言,但是却不是简单的单根结构,问题就在Function和Object的特殊性上。
虽然说过,数字使用L或者D作为末尾标识,确定精度[2]范围,但是在js中使用的是 IEEE 754规范,使用双精度标识,所以不需要区分,所有内容都是双精度的,无论是整型还是浮点数。
所以:
var a = 1L;
var b = 2D;
都是错误的,末尾不需要额外的标识位。
但是:
var c = 0x1;
这个是必需的,因为这代表的是进制转换。
不过有一点,无论是何种进制,在js中都会转为十进制,所以当你取值时发现不对,不需要紧张,这只是表示方式不同而已,定下的内容是不会变的。
不过在js中数学运算可能会出点精度不对的问题
0.1+0.2 !=0.3
你可能会惊讶,为什么呢。这时候就要去参考一下规范是为什么了吧。