js 上级作用域的查找

/*

* 当前函数执行,形成一个私有作用域A。A的上级作用域是谁,和他在哪执行的没有关系,和他在哪创建(定义)的有关系,在哪创建的,它的上级作用域就是谁

*/

/*var a = 12;

function fn(){

    console.log(a);

    // => arguments: 实参集合

    // => arguments.callee :函数本身FN

    // => argument.callee.caller 当前函数在哪里执行的,CALLER就是谁(记录的是它执行的宿主环境),在全局下执行CALLER的结果是NULL

    console.log(arguments.callee)

}

function sum(){

var a = 120;

fn();  // 12

}

sum();*/


面试题:

var n = 10;

function fn(){

    var n = 20;

    function f(){

        n++;

        console.log(n)  //21

    }

    f();

    return f

}

var x = fn();

x();            //22

x();            //23

console.log(n)    //10


上级作用域查找 面试题
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,253评论 0 2
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,628评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,419评论 2 17
  • 原文链接 Haskell和scala都支持函数的柯里化,JavaScript函数的柯里化还与JavaScript的...
    dreamapple阅读 7,344评论 0 24
  • 1.函数声明和函数表达式有什么区别 (*) 区别: 函数声明后面的分号可加可不加,不加也不影响接下来语句的执行,但...
    Sheldon_Yee阅读 3,150评论 0 1

友情链接更多精彩内容