美文网首页
综合考察闭包,this指针的代码题

综合考察闭包,this指针的代码题

作者: haha2333 | 来源:发表于2019-07-22 23:33 被阅读0次

记录第一次面试——广州凡科(四)

第四题:让人纠结的代码题
具体题目已经记得不是很清楚了

考察点:闭包和this指针,还有点点匿名函数?

var a = "凡科足球俱乐部"
var xxx = {
    a:"更强的足球俱乐部",
    bb:function() {
      return function (a){
          return function(){
              console.log(this.a); // 凡科足球俱乐部
              console.log(a); // 更强的足球俱乐部
            }();
      }(this.a)
    }
}
console.log(xxx.bb())   // undefined
var a = "凡科足球俱乐部"
var xxx = {
    a:"更强的足球俱乐部",
    bb:function() {
      return function (a){
          return function(){
              console.log(this.a); // 凡科足球俱乐部
              console.log(a); // 凡科足球俱乐部
            }();
      }(this.a)
    }
}
var exec=xxx.bb
exec()  

真是没有想到,竟然不一样!!!

引出了几个问题:

1.this指针在这里究竟是怎么指向的
答:第一块代码由bb由xxx对象引用,所以this指向xxx,所以第10行,this.a是"更强的足球俱乐部",也作为参数传进了匿名函数内部。所以第2个console是"更强的足球俱乐部",在闭包内部,this始终指向全局环境,所以第1个console打印"凡科足球俱乐部"。
第二块代码,exe获得了bb的引用,实际上他是在全局环境下执行的,所以this.a是 "凡科足球俱乐部"

2.第一块代码的undefined是从哪里来的?
答:因为bb()执行后打印两条console,但是bb()没有返回值,所以输出undefined

3.用vscode编译和用浏览器编译结果不一样
答:vs code模仿js引擎可能不完美,毕竟js代码编译是浏览器工作。但是使用浏览开发者工具进行调试时,注意浏览器缓存

相关文章

  • 综合考察闭包,this指针的代码题

    记录第一次面试——广州凡科(四) 第四题:让人纠结的代码题具体题目已经记得不是很清楚了 考察点:闭包和this指针...

  • 简单基础知识

    算法 3道 (只用了一种方法,每篇会有3题) //1.考察闭包 //2.考察算法 求最大值 //3.考察算法 出...

  • Swift 2.0 学习笔记 7_闭包

    //: 闭包 //: 闭包的定义 // 闭包是自包含的函数代码块, 可以在代码中被传递和使用. 闭包可以捕获和存储...

  • Swift 2.1 Closure(闭包)

    # 闭包(closures) -/*闭包(Closures) - *闭包是自包含的功能代码块,可以在代码中使用或者...

  • Swift 闭包

    闭包 闭包是保存一段代码块,可以在代码中传递和是使用(类似Block) 闭包和block类似 闭包的表达式如下闭包...

  • 使用Playground快速练习Swift语法--闭包和枚举

    闭包 定义:闭包是自包含的函数代码块,可以在代码中被传递和使用。 闭包表达式语法 Swift闭包使用{}包含,in...

  • Swift学习笔记(1)

    SWift学习笔记 闭包 闭包表达式 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 ...

  • 再次学习 Swift 闭包

    Swift 闭包 1. 什么是闭包? 闭包是自包含的函数代码块,可以在代码中被传递和使用。 2. 闭包能做什么? ...

  • swfit autoclosure (闭包)

    闭包是什么很简单就是一段代码,同理lambdas ,底层是什么 目前理解就通C语言的函数指针吧,这个指针可以保存一...

  • 使用事件代理完成创建多个a标签并绑定事件

    事件代理和闭包综合运用 使用场景:需要创建多个元素并绑定同类型事件 代码如下:

网友评论

      本文标题:综合考察闭包,this指针的代码题

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