巡山小妖精

文章 评论 浏览 617

巡山小妖精 2022-05-04 13:57:14
const arr1 = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'];
const arr2 = ['A', 'B', 'C', 'D']
const arr = [...arr1,...arr2]
let targetArr = [];
arr2.forEach(item => {
  arr.forEach(ele=>{
      if(ele.includes(item)){
	targetArr.push(ele)
       }
   })
});	
console.log('targetArr',targetArr);

第 30 题:请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B, C1, C2, C, D1, D2, D]

巡山小妖精 2022-05-04 13:51:27

函数被创建时,保存作用域链到函数的内部属性[[scope]]这一步的一点个人理解,不知是否正确

最近才看到这个博客,好多概念有了全新的认识,感谢博主的分享。
有几个问题不知道自己的理解是否正确,以代码1举例说明

function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f();
}
checkscope();
  1. 函数的创建和执行的关系。
    全局中创建的函数是在全局上下文执行的时候创建的;函数a内部创建的函数b是在函数a执行的时候创建的。
    在代码1中:
    checkscope函数是在全局上下文执行的时候创建的,f函数是在checkscope函数执行时被创建的。
    疑问1:如果没有最后一句checkscope();执行checkscope函数,f函数就不会被创建,那么f函数的[[scope]]以及fContext均不会生成?

  2. 函数创建时[[scope]]属性的生成。
    疑问2:函数创建时[[scope]]属性是否是此时执行上下文栈中最上层的执行上下文对象的Scope的引用?
    在代码1中:

  • checkscope函数创建时是全局上下文执行时,此时
    ECStack = [
        globalContext
    ];
    globalContext = {
        VO: [global],
        Scope: [globalContext.VO],
        this: globalContext.VO
    }
    checkscope.[[scope]] = [
      globalContext.VO
    ];

checkscope.[[scope]] 就是ECStack中最上层上下文globalContext.Scope的引用

  • f函数创建时是checkscope函数上下文执行时,此时
    ECStack = [
        checkscopeContext,
        globalContext
    ];
    checkscopeContext = {
        AO: {
            arguments: {
                length: 0
            },
            scope: undefined,
            f: reference to function f(){}
        },
        Scope: [AO, globalContext.VO],
        this: undefined
    }
    f.[[scope]] = [
      checkscopeContext.AO
      globalContext.VO
    ];

f.[[scope]] 就是此时ECStack中最上层上下文checkscopeContext.Scope的引用

在代码1中我的这个想法貌似能说通。


以上两个疑问还请聚聚们赐教

JavaScript 深入之执行上下文

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文