全局变量:在全局定义的变量
局部变量:在局部定义的变量,也称函数里面定义的变量
函数里面的能访问外面的 外面的不能访问里面的var a = 123; //全局变量 function test () { var b = 123; function demo () { var c = 234 ; document.write(b); document,write(a); } demo(); document.write(c); } test(); c不能访问 b a 可以访问
预编译前奏
1.imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。
eg:a=123;
eg: var a = b = 123;
2.一切声明的全局变量,全是window的属性。
eg:var a = 123; ===> window.a=123
预编译
1.函数声明整体提升
2.变量 声明提升
eg:
function test() {
var a = b = 123;
}
test();
b 未被声明 直接被赋值 归window所有
window.b = 123 window.a = underfined
var num = 123; window.num = 123; delete window.name -> false 一旦经历了var的操作,所得出的属性,window,这种属性叫做不可配置属性 不可配置的属性 delete不掉
var obj = {}; obj.num = 234;
四部曲
1.创建AO对象
2.找形参和变量声明,将变量和形参名作为AO属性名,值为underfined
3 将实参值和形参统一
4 在函数体里面找函数声明,值赋予函数体
预编译发生在函数执行的前一刻
1.生成了一个GO对象
GO{
a : 123(underfined=>function~~=>123)
}
var a = 123;
function a (){
}
console.log(a);=>123
Go{
ƒ test(test) {
console.log(test);
var test = 234;
console.log(test);
function test(){
}
}
}
console.log(test);
function test(test) {
console.log(test); AO里有先找AO 没有再去找GO
var test = 234;
console.log(test);
function test(){
}
AO{
test : function () {},=>234
}
}
test(1);
var test = 123;
网友评论