一.全局作用域
——直接编写在script标签中的JS代码,都在全局作用域
——全局作用域在页面打开时创建,在页面关闭时销毁
——在全局作用域中有一个全局对象window,它代表的是一个浏览器窗口,它由浏览器创建我们可以直接使用
——在全局作用域中,创建的变量都会作为window对象的属性保存,创建的函数都会作为window对象的方法保存
function fun4(){
function fun_son(x){
document.write("你的心有一道墙"+"</br>");
}
return fun_son();//这里可以返回一个函数对象也可以返回一个函数调用
}
window.fun4();
JS声明问题:
使用var关键字声明的变量会在所有代码执行之前被声明(不会赋值),但是如果变量不使用var声明那么不会提前声明。
而函数声明时,如果使用函数声明形式创建函数funtion 函数(){},那么它所有执行代码会在所有代码执行之前就被创建。而使用函数表达式 var fun=funtion(){} 创建的函数则不会被提前创建。
二.函数作用域
——调用函数时创建函数作用域,函数执行完毕以后,函数作用域被销毁
——每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
——在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问函数作用域变量
——在函数中如果不重新声明var变量的话,那么默认就是全局变量,修改的也是全局变量,同时,如果某个变量与全局变量同名,那么可以使用window字段来使用全局变量
——在JS中定义了形参就相当于在函数作用域中声明变量
——当在函数作用域中使用一个变量的时候,他会现在自身作用域中寻找,如果由就直接使用,否则就一层层的向外层作用域寻找,如果全局中都没有找到就直接报错