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
题库维护不易,您的支持就是我们最大的动力!