1 number
- JavaScript内部所有数字都是以64位浮点数形式储存,
1
和1.0
没有区别 - 64 = 1(0负1正)+ 11(指数部分) + 52(小数部分)
- 浮点数不是精确的值(二进制存储的原因),所以
0.3/0.1 //2.9999999999999996
NaN
表示非数字,不等于任何值包括他自身0/0 //NaN
- 非0数值除以0与计算结果太大会太小时得到
Identify
,Identify
有正负之分 Infinity
的运算
Infinity
与undefined
计算,返回的都是NaN
- 0乘以
Infinity
,返回NaN
;0除以Infinity
,返回0;Infinity
除以0,返回Infinity
Infinity
加上或乘以Infinity
,返回的还是Infinity
Infinity
减去或除以Infinity
,得到NaN
Infinity
与null
计算时,null
会转成0,等同于与0的计算
2 string
- 字符串默认只能写在一行内,分成多行将会报错
- 转义
- 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠(不推荐)
- 连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行(推荐)
3 symbol
- 生成一个全局唯一的值(不是字符串)
- 某种角度可以看作是一种注释
4 null, undefined 和boolean
- null与undefined都可以表示“没有”,含义非常相似
- 变量声明但没有赋值时值为
undefined
(语法规定) null
表示空对象,undefined
表示非空对象(惯例)- 如果 JavaScript 预期某个位置应该是布尔值,除下面6个值外被视为
false
,其余均被视为true
- undefined
- null
- false
- 0
- NaN
- “”或”(空字符串)
5 object
- 对象就是一组“键值对”(key-value)的集合,无序
- 键名都是字符串
- 定义对象时,如果键名符合标识符,那么会被自动转成字符串
- 键名不符合标识符,则必须加上引号
- 键名为数值时会被自动转成字符串
- 如果不同的变量名指向同一个对象,那么都是这个对象的引用,也就是说它们指向同一个内存地址
obj[key]
,obj['key']
与obj.key
obj.key
与obj['key']
等价obj[key]
中的key表示一个变量- 方括号运算符内部还可以使用表达式。
- 数字键可以不加引号,因为会自动转成字符串
- 数值键名不能使用点运算符
var foo = 'bar';
var obj = {
foo: 1,
bar: 2
};
obj.foo
obj[foo]
- JavaScript 允许属性的“后绑定”
- 查看一个对象本身的所有属性,可以使用
Object.keys
方法 delete
命令用于删除对象的属性,删除成功后返回true
in
运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true
,否则返回false
for...in
循环