美文网首页
记1月3日作业

记1月3日作业

作者: 18K纯帅咸鱼 | 来源:发表于2017-01-06 19:10 被阅读0次

Q1:函数声明和函数表达式的区别

函数声明: function doSomething( ){ statement1;statement2;statement3; }
函数表达式:var aBc = function( ){ console.log('hello'); }
函数声明和函数表达式非常的类似,在解析时,函数声明会被前置,是语句;而函数表达式是表达式,赋值给变量,不会被前置。

Q2:什么是声明前置

  1. 在同一个作用域下,var声明的变量与function声明的函数会前置。
  2. 函数表达式和var声明的变量没有任何区别。
  3. 在发生命名冲突时,会首先前置变量,再会发生第二个变量值覆盖相同命名的变量值。

Q3:求n!,用递归来实现

function factor(n){
  if(n === 1) {
    return 1
  }
return n * factor(n-1)

Q4:什么是立即执行的函数表达式?有什么作用?

立即执行的函数表达式:声明了此函数后立即自动调用。
语法:

  1. (function fn1() {});
  2. [function fn2() {}];
  3. 1, function fn3() {};

作用:创建独立的作用域,防止变量被污染。

Q5:如下代码输出什么? 写出作用域链查找过程伪代码

var x = 10
bar()
function foo() {
console.log(x)
}
function bar(){
var x = 30
foo() //  输出什么
}   
答:1. globalContext = {
         AO: { 
          x: 10
          foo: function(){} 
          bar: function(){} 
        }, 
    }
   foo.[[scope]] = globalContext.AO
   bar.[[scope]] = globalContext.AO
2. fooContext = {
    AO: { }
    Scope:foo.[[Scope]]    //console.log(foo)=10
3.barContext={
    AO:{ 
          x:30
    }
  Scope:bar.[[Scope]]    //console.log(bar)=30

Q7. 如下代码输出什么? 写出作用域链查找过程伪代码?

var x = 10;
bar()  
function bar(){
var x = 30;
(function (){
console.log(x)
})()
}
答:1.globalContext = {
   AO: {
    x: 10
    bar: function(){}
    }
}
 bar.[[scope]] = globalContext.AO

2.barContext = {
   AO: {
    x: 30,
    foo: function
},
Scope:bar.[[scope]]
}
 foo.[[scope]] = barContext.AO   //console.log(x)=10
3. fooContext = {
    AO: {}
scope:foo.[[scope]]    //console.log(x)=30
}

Q8. 如下代码输出什么? 写出作用域链查找过程伪代码?

var a = 1;
function fn(){
console.log(a);  // undefined
var a = 5;
console.log(a);  // 5
a++;
var a;
fn3();
fn2();
console.log(a);  // 20
function fn2(){
    console.log(a);  // 6
    a = 20;
    } 
}
function fn3(){
console.log(a)  // 1
a = 200;
}
fn();
console.log(a);  // 200
答:1.globalContext = {
        AO: {
             a: 1,
             fn: function,
             fn3:function,
      }
fnContext.Scope = globalContext;
fn3Context.Scope = globalContext;
fnContext = {
AO:{
     a: undefined,     //fn第一个console.log(a)
     fn2: funtion,
   },
Scope: globalContext.AO,
}
fn2Context.Scope = fnContext;

fn2Context = {
               AO:{
             },
Scope: fnContext,
}

fn3Context = {
               AO:{
},
Scope: globalContext,
}

2.fnContext{
            AO: {
                 a: 5     // 第二个console.log(a)的输出值
                 fn2: function,
            },
Scope: globalContext,
}
3. globalContext = {
                     AO:{
                     a: 1,     //fn3的console.log(a)
                     fn: function,
                     fn3: function,
                    },
                     Scope: null,
}
fnContext = {
             AO:{
             a: 6,             //a++之后的值
             fn2: funtion,
            },
Scope: globalContext,
}

fn3Context = {
              AO:{
              },
Scope: globalContext,
}
4.globalContext = {
                   AO:{
                   a: 200,     //fn3的a = 200
                   fn: function,
                   fn3: function,
                   },
Scope: null,
}
fnContext = {
             AO:{
             a: 6,            //fn2的console.log(a)
            fn2: funtion,
            },
Scope: globalContext,
}

fn2Context = {
              AO:{
              },
Scope: fnContext,
}

fn3Context = {
              AO:{
              },
Scope: globalContext,
}

5.fnContext = {
               AO:{
               a: 20,  //fn2里a = 20;fn的第三个console.log(a)
               fn2: funtion,
               },
Scope: globalContext,
}
6.globalContext = {
                   AO:{
                   a: 200,   //全局最后的console.log(a)
                   fn: function,
                   fn3: function,
                   },
Scope: null,
}

输出结果依次为: undefined,5,1,,6,20,200

Q9:以下代码输出什么?画出执行过程作用域伪代码(难度五颗星,用兴趣的同学可选做)

function fn(){
 var x = 1;
 function fn2(){
   x++;
console.log(x) ;
}
return fn2
}
var foo = fn()
var bar = fn()
foo()
bar()
foo()

未完成,完成后在简书补充

Q6:如下代码输出什么? 写出作用域链查找过程伪代码?

相关文章

  • 【语文助学】上课要抓点,作业敢挑战

    昨天,网课学习《核舟记》。安排的作业如下: 今日学习《核舟记》作业: 1.网课记录 2.网课作业(三项作业①看纪录...

  • 七大家庭作业辅导法

    1、明确作业及要求 有些A娃经常会漏记作业,有记漏的,也有为了逃避作业故意的。 但无论如何,养成孩子记全作业的习惯...

  • 家庭作业辅导法

    1、明确作业及要求 有些A娃经常会漏记作业,有记漏的,也有为了逃避作业故意的。 但无论如何,养成孩子记全作业的习惯...

  • 作业记

    时光匆匆,已经做了三年的班主任,孩子们从一群懵懂无知的小朋友,到现在要求自己想要的自由,他们在长大,同...

  • 作业记

    人,我家里有一本小人书。 一,我家里有一个番茄钟 。 二,明天是星期二。 五,我有五双鞋。 天,飞机在天上飞。 三...

  • 作业记

    2019.3.16 星期⑥ 阴 读经人员:妈妈、芷晴、芷翔 读经第811天 读经内容:妈妈、芷晴 1、《伤寒论》 ...

  • 20200403订正须知

    一笔记 二基础作业回答问题 三课堂作业单元检测 四反思作业

  • 【博图第五期】英国博赞思维导图管理师Minta第八幅《如何掌控你

    【主题】TED Laura Vanderkam《如何掌控你的自由时间》(听记) 【绘制目的】 完成作业,听记尝试 ...

  • 还是不想写作业 12/17

    昨晚写周记之前,小马又犯了畏难情绪。 “妈妈,我最近还是不想写作业,我不想写周记。” “要写作业的时候你有什么感受...

  • 还来得及吗?

    赶作业。记一件事。断奶了。

网友评论

      本文标题:记1月3日作业

      本文链接:https://www.haomeiwen.com/subject/fmrxbttx.html