作用域和作用域链

global scope


(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域


作用域和作用域链_第1张图片
B0389D51-CDA9-4CEC-8A67-FB3E223B7C4D.png

(2)所有末定义直接赋值的变量自动声明为拥有全局作用域;

function do(){
var author="lyf";
      name="yx";
    alert(author);
}
alert(author)
B20BD8B3-1AA7-4FC7-B3AD-011445844972.png

(3)所有window对象的属性拥有全局作用域
  一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。

local scope


全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域

function do(){var do=1;};alert(do)//error

scope chain

一个很简单的例子
function add(num1,num2){
      var sum=num1+num2;
return sum;
}

该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

你可能感兴趣的:(作用域和作用域链)