暗示全局变量
1.imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就位全局对象(就是window)所有。
全局对象是window
a = 10;
2.一切声明的全局变量,全是window的属性。
例:var a = 10 ——> window.a = 10。
window就是全局的域
如果在全局变量在var a = 123;那么就会返回window
例如:
var a = 123
console.log(a) ——> window.a
function test() {
var a = b = 123;
}
test();
写test()代表执行test,赋值是自右向左的,上面先把123赋给b的时候,b未经声明,然后在声明a,再给b赋值给 a,导致b未声名,所以b归window所有
访问window.a是undefined,访问window.b是123
预编译(解决执行顺序问题)
例如:
function fn(a) {
console.log(a);//打印 function a (){}
var a = 123;
console.log(a);//打印 123