变量命名
-
方法:
- 匈牙利命名法: 变量名=类型+对象描述
- Int 整型 —— i
- Float 浮点 —— fl
- Boolean 布尔 —— b
- String 字符串 —— s
- Array 数组 —— a
- Object 对象 —— o
- Function 函数 —— fn
- Regular Expression 正则 —— re
-
驼峰命名法:
- 全小写 —— hello_world、little_boy、big_house_man
- 大小写混合:
- 大驼峰 —— HelloWorld、LittleBoy、BigHouseMan
- 小驼峰 —— helloWord、littleBoy、bigHouseMan
-
- 类 ——> 大驼峰命名
- 变量名、函数名、对象名 ——> 小驼峰命名
-
-
规则:
- 首字符 —— 英文字母 || 下划线
- 组成 —— 英文字母、数字、下划线
- 禁忌 —— JavaScript 关键词和保留字
- 注意 —— JavaScript变量对大小写敏感
变量声明
-
显示声明 —— var 变量名
-
出现问题:
- 没有类型
- 重复声明
- 隐式声明
- 不声明直接赋值
-
正确做法:
- 先声明,后读写
- 先赋值,后运算
变量类型
-
值类型
-
- 占用空间固定,保存在栈中
- 保存与复制的是值本身
- 使用 typeof 检测数据的类型
-
引用类型
-
- 占用空间不固定,保存在堆中
- 保存与复制的是指向对象的一个指针
- 使用 instanceof 检测数据的类型
- 使用 new() 方法构造出的对象是引用型
作用域
-
全局变量
-
包含:
- 在函数体外定义的变量
- 在函数体内部定义的无 var 的变量
-
调用:
- 任何位置都可以
-
包含:
-
局部变量
-
包含:
- 在函数内部使用 var 声明的变量
- 函数的参数变量
-
调用:
- 在当前函数的内部
-
包含:
-
同名优先级
- 局部变量 > 同名参数变量 > 同名全局变量
-
特性
- 全局变量是全局对象的属性
- 局部变量是调用对象的属性
-
作用域链:
- 内层函数可以访问外层函数的局部变量
- 外层函数不能访问内层函数的局部变量
-
生命周期:
- 全局变量 —— 除非被删除,否则一直存在
- 局部变量 —— 自声明起 至 函数运行完毕/被删除
- 回收机制 —— 标记清除,引用计数