- JavaScript中非常重要的数据类型是对象和数组。
- JavaScript标识符必须以字母、下划线(_)或美元符($)开始,后续字符可以是字母、数字、下划线或美元符。
- JavaScript变量是无类型的(untyped),变量可以被赋予任何类型的值,同样一个变量也可以重新赋予不同类型的值。使用var关键字来声明变量。
数字
- JavaScript不区分整数值和浮点数值,所有的数字均用浮点数表示。当一个数字直接出现在JavaScript程序中,我们称之为数字直接量(numeric literal)。
- JavaScript中的算术运算在溢出、下溢或被零整除时不会报错。
- JavaScript预定义了全局变量Infinity和NaN,用来表示正无穷大和非数字值。
- 非数字值有一点特殊,它和任何值都不相等,包括自身。因此没办法比较x==NaN来判断变量x是否是NaN,应当用x != x来判断,当且仅当x为NaN的时候,表达式的结果才为true。
文本
- JavaScript中没有表示单个字符的“字符型“。
- JavaScript中的字符串直接量,是由单引号或双引号括起来的字符序列。由单引号定界的字符串中可以包含双引号,由双引号定界的字符串中也可以包含单引号。
模式匹配(没搞清楚)
布尔值
- undefined、null、0、-0、NaN、“”这六个JavaScript值会被转换成false。
- 布尔值包含toString()方法,可以使用这个方法将字符串转换为true或false。
null和undefined
- 两者都表示“值的空缺”,判断相等的运算符“==”认为两者是相等的,要使用严格相等运算符“===”来区分它们。
全局对象
- 全局对象的属性是全局定义的符号,JavaScript程序可以直接使用。当JavaScript解释器启动时(或者任何Web浏览器加载新页面的时候),它将创建一个新的全局对象,并给它一组定义的初始属性。
- 全局属性:undefined、Infinity、NaN
- 全局函数:isNaN()、parseInt()、eval()
- 构造函数:Date()、RegExp()、String()、Object()、Array()
- 全局对象:Math、JSON
JavaScript中的原始值(undefined、null、布尔值、数字、字符串)是不可更改的,而对象是可以更改的。
- 对象的比较并非值的比较。我们将对象称为引用类型,因此对象值都是引用,对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。
- 当直接将对象或数组赋值给一个变量的时候,仅仅是对赋值的引用,对象本身并没有复制一次。如果想要得到一个对象或数组的副本,必须显式复制对象的每个属性或数组的每个元素。
- 同样地,想要比较两个单独的对象或者数组,则必须比较它们的属性或元素。