学习目标:
熟练掌握Js预编译
学习产出:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
//a = 10;
//console.log(window.a);
//window就是全局的域
//var a = 123;
// console.log(a) --> window.a
// window{
// a : 123;
// }
// function test(){
// var b = 123;
// }
// test();
// console.log(window.b)
/* 预编译发生在函数执行的前一刻
1.创建AO 对象Activation Object(执行器上下文)
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3.将实参和形参统一
4.在函数体里面找函数声明,值赋予函数体*/
/* function fn(a){
console.log(a);
var a = 123;
console.log(a);
function a(){}
console.log(a);
var b = function (){}
console.log(b);
function d(){}
}
fn(1);*/
/* function test(a, b) {
console.log(a);
c = 0;
var c;
a = 3;
b = 2;
console.log(b);
function b() {}
function d() {}
console.log(b);
}
test(1);*/
/*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);*/
/* console.log(a);
var a = 123;
function a() {}
function test() {
var a = b = 123;
console.log(a);
console.log(window.a);
console.log(b);
console.log(window.b);
}*/
/* console.log(test);
function test(test) {
console.log(test);
var test = 234;
console.log(test);
function test() {}
}
test(1);
var test = 123;*/
/* global = 100;
function fn() {
console.log(global);
global = 200;
console.log(global);
var global = 300;
}
fn();
var global;*/
/*function test() {
console.log(b)
if (a){
var b = 100;
}
c = 234;
console.log(c);
}
var a;
test();
a = 10;
console.log(c);*/
/* function bar() {
return foo;
foo = 10;
function foo() {}
var foo = 11;
}
console.log(bar());*/
/*function bar() {
foo = 10;
function foo(){+
}
var foo = 11;
return foo;
}*/
/*function a() {
var num = 100;
function b() {
num ++;
console.log(num);
}
return b;
}
var demo = a();
demo();
demo();*/
</script>
</body>
</html>