问答题7/1668以下代码输出什么?解释原因

1const obj = { 2 name: "百度", 3 print: () => console.log(this.name), 4}; 5obj.print();
难度:
2025-08-28 创建

参考答案:

这段代码的执行结果是:

undefined

原因解析

  1. 箭头函数的 this 特性

    • 箭头函数不会创建自己的 this,它的 this 来自 词法作用域,即它定义时所在的上下文。
    • 在这段代码里,print 是用箭头函数定义的,所以它的 this 不是 obj,而是定义它时所在的环境。
  2. 当前环境的 this

    • 这段代码运行在模块或脚本的顶层环境:

      • 在严格模式下,顶层的 thisundefined
      • 在非严格模式下,顶层的 thiswindow(浏览器)或 global(Node.js)。
    • 不论是哪种情况,顶层对象上都没有 name 属性,因此 this.nameundefined

  3. 为什么不是 "百度"

    • 如果把 print 定义为普通函数:

      1print: function() { console.log(this.name); }

      那么调用 obj.print() 时,this 会绑定到 obj,输出就是 "百度"

    • 但是箭头函数丢失了这种绑定特性,它固定死了 this,因此取不到 obj 上的 name

最近更新时间:2025-08-28

赞赏支持

题库维护不易,您的支持就是我们最大的动力!