一、命名
1、方法
a、匈牙利命名法(变量名=类型+对象描述)
- Int 整型 i
- float 浮点型 fi
- Bollean 布尔 b
- String 字符串 s
- Array 数组 a
- Obeject 对象 o
- Function 函数 fn
- Regular Expression 正则 re
b、驼峰命名法
- 全部小写
- 单词与单词间用下划线分割
- 大小写混合
- 大驼峰:每个单词首字母大写
- 小驼峰:第一个单词首字母小写,其他首字母大写
2、规则
- 首字母:英文字母或者下划线
- 组成:英文字母,数字,下划线
- 禁忌:JavaScript关键词与保留字
二、声明
1、显示声明
- var变量名
2、陋习
- 没有类型
- 重复声明
- 隐式声明
- 不声明直接赋值
3、正解
- 先声明、后读写
- 先赋值、后运算
三、变量类型
1、值类型
- 占用空间固定,保存在栈中
- 保存与复制的是值本身
- 使用typeof检测数据的类型
- 基本类型数据是值类型
2、引用类型
- 占用空间不固定,保存在堆中
- 保存与复制的是指向对象的一个指针
- 使用instanceof检测数据的类型
- 使用new()方法构造出的对象是引用型
四、作用域
1、全局变量
a、包含
- 在函数体外定义的变量
- 在函数体内定义的无var声明的变量
b、调用
- 任何位置
2、局部变量
a、包含
- 在函数内部使用var声明的变量
- 函数的参数变量
b、调用
- 当前函数体部
3、优先级
- 局部变量高于同名全局变量
- 参数变量高于同名全局变量
- 局部变量高于同名参数变量
4、热性
a、忽略块级作用域
b、全局变量是全局对象的属性
c、局部变量是调用对象的属性
d、作用域链
- 内层函数可访问外层函数局部变量
- 外层函数不能访问内层函数局部变量
e、生命周期
- 全局变量:除非被显示删除,否则一直存在
- 局部变量:自声明起至函数运行完毕或被显示删除
- 回收机制
- 标记清除
- 引用计数