04 如何查找上级作用域

读这篇文章之前我们先来看一段代码:

var num = 1;
function fn() {
  var num = 2
  return  function() {
      console.log(num)
  }
}
var f = fn();
f();

~function () {
    var n = 3
    f();
} ();

是否能写出准确的答案?

如何查找当前作用域的上一级作用域?
看当前函数是在哪个作用域下定义的,那么它的上级作用域就是谁,和在哪儿执行的没有任何关系

作用域练习题

题1


// i++ ++i  都是自身累加1,在和其他的值进行运算的时候是有区别的
// i++   先拿i的值进行运算,运算完成本身在+1
// ++i   先本身累加1,然后拿累加完成的结果去运算
         function fn() {
            var i = 10;
            return function (n) {
                console.log(n + (++i))
            }
        }
        var f = fn();
        f(10)  // 21
        f(20)  // 
        f()(10)
        f()(20)
// 关键点:作用域是否销毁

题2

     function fn(i) {
            return function (n) {
                console.log(n + i++);
            }
        }
        var f = fn(13);
        f(12)
        f(14)
        fn(15)(12)
        fn(16)(13)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容