[TOC]
* * * * *
### 1. 标识符
就是变量、函数、属性的名字,或者函数的名字。
第一个字符必须是字母、下划线或者一个美元符号
* * * * *
### 2. 严格模式( `ECMAScript5` 引入)
在整个脚本中启用,就需要在脚本顶部添加: `'use strict'` 。这时,针对 `ECMAScript3` 中的一些不确定的行为做处理,而且对某些不安全的操作也会抛出错误。
也可以在函数中启用:
~~~
function () {
'use strict'
// 函数体
}
~~~
* * * * *
### 3. 变量
`ECMAScript` 的变量是松散类型的,即可以用来保存任何类型的数据,也可以说是一个用于保存值的占位符而已。
* * * * *
### 4. 数据类型
5种简单数据类型:
`Undefined、Null、Boolean、Number、String` +1种复杂类型 `Object`
(`ES6` 新增了 `Symbol` 基础类型)
`typeof` 变量 会出现以上这些的小写形式。
* * * * *
### 5. `Undefined`
Undefined类型的引入(ECMAScript3),是为了正式区分空对象 指针与未经初始化的变量。所以如果一个变量用来表示对象,那么初始化时候就赋值为 null
* * * * *
### 6. `Boolean`
| 数据类型 | 转换为 `true` | 转换为 `false` |
| --- | --- | --- |
| `Boolean` | `true` | `false` |
| `String` | 任何非空字符串(包括' ')| 空字符串 '' |
| `Number` | 任何非零数字(包括无穷大)| 0和 `NaN` |
| `Object` | 任何对象 | `null` |
| `Undefined` | 不适用 | `undefined` |
`!!someVar` 也可以转为 `Boolean` 值
* * * * *
### 7. `Number`
十进制,八进制,十六进制,浮点数(必须有小数点,且小数点后第一位为非0数字)
~~~
Infinity 正无穷大 -Infinity 负无穷大
NaN not a number 是一个特殊数值。
NaN==NaN // false
isNaN() 用来判断一个变量是不是数字
~~~
* parseInt('',进制)
第一个参数是要转化的字符串,第二个参数标明它是什么进制的数,最终是转为十进制整数(忽略小数点后的数)
* parseFloat()
只解析十进制的值,其他的都当做无用字符串
* * * * *
### 8. `String`
除了值为 `undefined` 和 `null` 的变量外,其他的所有变量都有 `toString()` 方法
所以这两个值如果要转为字符串,只能使用 `String()`
* * * * *
### 9. Object类型
相关内容很多,后面具体说明
* * * * *
### 10. 函数的参数
每个函数体中都可以访问一个变量 `arguments` ,这是一个类数组。由于修改里面的值后可能会反映到真实参数里,所以建议只是使用值就好了
![](https://box.kancloud.cn/e28209f7bd5d37c2ae52813689ad2737_736x512.png)
* * * * *