var变量提升原理
JS引擎的工作方式是:①先解析代码,获取所有被声明的变量,②然后在运行。也就是专业来说是分为预处理和执行两个阶段。
变量提升的定义:所有变量的声明语句都会被提升到代码头部,这就是变量提升。
所谓解释就是会先通篇扫描所有的js代码,然后把所有声明提升到顶端,第二步是执行,执行就是操作一类的。
案例1
<script type="text/javascript">
console.log(a);
var a=10;
</script>
// 以上代码输出undefined
// 原因:变量提升(把变量声明提升到当前执行环境的最顶端)
//以上这段代码相当于:
var a ;
console.log(a);
a=10;
案例2
<script type="text/javascript">
foo();
function foo() {
console.log("aaa");
}
</script>
// 结果输出:aaa
//原理: