一、JavaScript的变量分类。js内存为堆或栈
1、基本数据类型变量
a.number 整型
b.string 字符串类型
c.Boolean 布尔值类型
d.null 空
e.undefined 未定义类型
PS:基本数据类型存放在栈中
2、引用数据类型变量
object 对象
array 数组
function 函数
PS:引用数据类型存放在堆中
二、JavaScript中var、let、const的区别和使用
1、var定义变量
var定义的变量能够预解析,如果变量没有定义就直接使用的话,JavaScript回去解析这个变量,代码不会报错,只会输出undefine
var定义的变量可以反复去定义,当然后面的会覆盖前面的
var在循环中使用的时候,循环体外依然可以使用
var在整个函数内都是有效的,比如说在for循环内定义的一个var变量,实际上其在for循环以外也是可以访问的。
2、let声明变量
let定义的变量不会预解析,必须先声明再使用,否则会报错
let不能定义已经定义过的变量(无论之前是用var定义的还是let或者const定义的)
let已经被定义,不会被再次定义
let是块级作用域,函数内部使用let定义后,对函数外部无影响,简单说就是在一个{}里面生效
由于let是块级作用域,在循环绑定事件过程中let会在这个循环中生效,再次循环时let会重新定义生效
3、const定义变量
const定义的变量不会预解析,必须先声明再使用,否则会报错
const定义的变量不允许修改
2.2 变量的命名规范
变量命名规则
第一个字符必须是一个字母、下划线( _ )或一个美元符号( $ )
其他字符可以是字母、下划线、美元符号或数字
不能使用关键字和保留字命名
变量严格区分大小写
变量命名规范:
多个单词使用驼峰标识(小驼峰/大驼峰)
赋值 = 等号两边都加上空格,建议所有操作符或运算符都这样
一条语句结束后可以加上分号
变量应该做到见名知意
什么是关键字和保留字:已经被JS占用并且拥有明确的含义即作用
- 如果一个变量未声明(declaration)就直接使用,那么会报错
- 如果一个变量有声明,但是没有赋值,那么默认值是undefined
如果没有使用var声明变量也可以,但是不推荐(事实上会被添加到window对象上,用var也是