var 和 let 使用场景
if(true){
var a = 10;
}
//返回值:10 var为全局变量,可以被输出
console.log(a);
if(true){
let b = 10;
}
//返回值:报错 let 为局部变量,不可以输出值
console.log(b);
所以我们在判断是使用var好还是let好就会产生疑问?
当然是let 好,当在放弃使用var 全局变量使用完并且不设置为null会导致内存泄漏,非要使用var可以放在自执行函数中,防止内存泄漏(延展出垃圾回收和内存泄漏得问题)
const使用场景
const PI = 3.1415926 //const用来定义不能改变的值 -->即定义常量
const obj = { //const 可以用来定义对象
name:"张三",
age:12
}
obj = {name:"李四"} //不可以改成新的对象,因为它是常量
obj.name = "王五" //可以修改对象
什么时候用let ,什么时候用const?
计算定义的变量使用let,let定义的变量相,存在栈内存中,
定义一个函数表达式、对象、不变的值可以用const ,const 定义的常量存在堆内存
总结
var:var定义得变量没有函数作用域概念,在函数外定义是全局变量,在函数内定义是局部变量,拥有变量提升,可以重复声明,后面会将前面得覆盖
let:定义的变量有块级作用域概念,所声明得变量只在let命令所在得代码块有效,没有变量提升,不能够重复声明
const:定义常量、基本上和let一样,是块级作用域,没有变量提升,不能够重复声明,可以修改属性,但是不可以改成新的对象 ,因为它是常量