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