关于JavaScript中变量、作用域、作用域与闭包相关知识点总结
JavaScript 变量
变量是用于存储信息的"容器"。
与代数一样,JavaScript 变量可用于存放值和表达式。
变量可以使用短名称,也可以使用描述性更好的名称。
变量必须以字母开头
变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
变量名称对大小写敏感(y 和 Y 是不同的变量)
注意:JavaScript 语句和 JavaScript 变量都对大小写敏感。
JavaScript 作用域
作用域是可访问变量的集合。
JavaScript 作用域在 JavaScript 中, 对象和函数同样也是变量。
在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。
JavaScript 函数作用域: 作用域在函数内修改。
JavaScript 局部作用域(或者叫函数作用域)
变量在函数内声明,变量为局部变量,具有局部作用域。
局部变量:只能在函数内部访问。
因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。
局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。
js仅有两个作用域,函数中定义的变量仅能在本函数中使用,除此之外,其他变量皆是全局可用
注意:所有未定义直接赋值的变量自动声明为拥有全局作用域,并且该变量会挂载为window对象的属性
立即执行函数
语法:( function(){ 代码...} )()
作用:立即执行当前函数
JavaScript闭包
JavaScript 变量可以是局部变量或全局变量。
私有变量可以用到闭包。
优点:当我们需要对一个变量进行私有化控制的时候,可以使用闭包函数。同时在函数内部可以对局部变量进行最值控制等操作。
缺点:使用闭包函数,也就引申出了一个内存泄漏的问题,由于js内存回收机制是标记清除法,就是一个数据在有引用的情况下,不会被释放,因为闭包内的数据在外部有使用,所以不会被释放,只能通过手动赋值null来释放。