var let const 三者的区别与应用
var 全局作用域 具有变量提升
let 块级作用域 不具有变量提升
1.什么叫变量提升?
在js运行机制中 代码从上到下执行
console.log(a)
var a = 1,
console.log(a)
let a = 1,
第一种情况不会报错而第二种会报错 这就是变量提示
2.let 块级作用域
var a = 1;
function fn(){
let a = 2
console.log(a,'a');
}
fn()
尽管在全局作用域下定义了变量a 但是在函数内部定义了局部作用域a 最后打印还是局部作用域的a
var a = 1;
function fn(){
let a = 2
console.log(a,'a1');
}
fn()
console.log(a,'a2');
打印出来的结果是多少??
- const 常用来声明常量,且常量不可修改,必须初始化,存在着块级作用域
栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间。(基本类型:String,Number,Boolean,Null,Undefined)
堆(heap):动态分配的内存,大小不定也不会自动释放,存放引用类型,指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针。(引用类型:Function,Array,Object)