1 | console.log(a);//undefined |
定义:变量提升是当栈内存作用域形成时,js代码执行前,浏览器会将带有var, function 关键字的变量提前声明declare(值默认就是undefined),定义defined(就是赋值操作),这种预先处理的机制就叫做变量提升机制也叫预定义
在变量提升阶段:带var的只声明还没有被定义,带function的已经声明和定义。所以在代码执行前,有带var的就提前声明,比如这里的a就赋值成undefined,在代码执行过程中遇到创建函数的代码浏览器会直接跳过
讲解示例
1 | var a = 12; |
变量提升只发生在当前作用域。比如:在页面开始加载时,只有全局作用域发生变量提升,这时候的函数中存储的都是代码字符串。