<h2>global scope</h2>
(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域
(2)所有末定义直接赋值的变量自动声明为拥有全局作用域;
function do(){
var author="lyf";
name="yx";
alert(author);
}
alert(author)
(3)所有window对象的属性拥有全局作用域
一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。
<h2>local scope</h2>
全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域
function do(){var do=1;};alert(do)//error
<h2>scope chain</h2>
一个很简单的例子
function add(num1,num2){
var sum=num1+num2;
return sum;
}
该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。