1const obj = { 2 name: "百度", 3 print: () => console.log(this.name), 4}; 5obj.print();
参考答案:
这段代码的执行结果是:
undefined
箭头函数的 this 特性
this,它的 this 来自 词法作用域,即它定义时所在的上下文。print 是用箭头函数定义的,所以它的 this 不是 obj,而是定义它时所在的环境。当前环境的 this
这段代码运行在模块或脚本的顶层环境:
this 是 undefined。this 是 window(浏览器)或 global(Node.js)。不论是哪种情况,顶层对象上都没有 name 属性,因此 this.name 是 undefined。
为什么不是 "百度"
如果把 print 定义为普通函数:
1print: function() { console.log(this.name); }
那么调用 obj.print() 时,this 会绑定到 obj,输出就是 "百度"。
但是箭头函数丢失了这种绑定特性,它固定死了 this,因此取不到 obj 上的 name。
最近更新时间:2025-08-28

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