全局作用域:
- 直接编写在script标签中的代码。
- 全局作用域在页面打开时创建,页面关闭时销毁。
- 在全局作用域中有一个全局对象window(代表一个浏览器的窗口,由浏览器创建),可以直接使用。
- 创建的变量都会作为window对象的属性保存。全局里面的函数都会作为window对象的方法保存。
变量的声明提前
使用var关键字声明的变量,会在所有的Demo执行前被声明(但是不会赋值)。如果声明变量时,不使用var,变量不会被提前声明
函数的声明提前
使用函数声明形式创建的函数,会在所有的函数执行之前就创建。
全局作用域中的变量都是全局变量,在页面的任意部分都可以访问到。
var a = 1;
var b = "dd";
console.log(window.a);//1
function fun(){
console.log("hanshu");
}
window.fun();
/*fun();*/
fun1();
var fun = function(){
console.log("1");
};
function fun1(){//不会被声明提前,不能调用
console.log("2");
}
函数作用域:
调用函数时,创建。。函数执行完毕后销毁。
每调用一次函数,就会创建 一个新的函数作用域,他们之间是相互独立的
全局作用域无法访问函数作用域中的变量,函数作用域可以访问全局作用域中变量。
当在函数中操作一个变量时候,会现在自身作用域中寻找。如果找不到,才会在上层作用域中寻找。
在函数中要访问全局的变量,可以使用window.变量名
var b = 10;
function fun(){
var a = 1;
var b = "函数中变量b";
console.log(b);
}
fun();
console.log(b);
不用var声明的变量都是全局变量
var b = 10;
function fun(){
//不用var声明的变量都是全局变量
b = "函数中变量b";
console.log(b);
}
fun();
console.log(b);