注意: 本文章总结的知识点参考渡一教育前端课程
以下两句话比较重要:
- 函数声明整体提升
- 变量 声明提升
//暗示全局变量,未经声明就赋值了,属于window属性
a = 10;
console.log(a)
//一切声明的全局变量,全是window的属性
var a = 10;
console.log(window.a) //10
预编译:发生在函数执行的前一刻
预编译的步骤如下:
其中AO指的是执行期上下文
例子如下:
<script type="text/javascript">
function test(a,b) {
console.log(a);
console.log(b);
var b = 234;
console.log(b);
a = 123;
console.log(a);
function a() {}
var a;
b = 234;
var b = function() {}
console.log(a);
console.log(b);
}
test(1)
//结果是:
// function a() {}
// undefined
// 234
// 123
// 123
// function() {}
</script>