JavaScript - 执行环境和作用域链

2016-06-28  本文已影响53人  Wenliang

引言

对于刚接触这门语言的人来说,js的作用域常常让人感到混乱,此文用于加深对Javascript语言中执行环境和作用域的理解,部分语句取自《JavaScript高级程序设计》一书。


执行环境(execution context)

作用域链(scope chain)

作用域链 简易图示

延长作用域链

没有块级作用域

if(true) {
      var color = 'blue';
}
alert(color); // it will alert 'blue', rather than undefined
for(var i = 0; i < 10; i++) {
      // do something here
}
alert(i); // it will alert 10
 function add(num1, num2) {
     var sum = num1 + num2;
     return sum;
 }
 var result = add(10, 20); // result is 30
 alert(sum); // ReferenceError: sum is not defined

对象内的作用域

var obj = {
  a: this, // 此处this为指向window
  b: function() {
       alert(this); // 此处this指向obj
     } 
};

ES6 let 声明变量

上一篇 下一篇

猜你喜欢

热点阅读