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