You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何getEmployeeName()返回空字符串而非undefined?JS this绑定疑问

为啥getEmployeeName()返回空字符串而不是undefined?

嘿,这个问题问得很精准,我来给你拆解明白~

首先得搞懂this的绑定逻辑:当你把employee.getName这个函数单独赋值给getEmployeeName变量时,它就和原来的employee对象彻底解绑了。这时候直接调用getEmployeeName(),属于全局上下文调用,函数里的this会自动指向全局对象——在浏览器环境里就是window,Node.js环境里则是global。

那空字符串到底哪来的?答案藏在浏览器的window对象里:window有个内置的name属性,这个属性原本是用来给窗口命名的,它的默认值就是空字符串。所以当你调用getEmployeeName()时,this.name其实就是window.name,自然就返回空字符串啦。

要是换成Node.js环境运行这段代码,你会发现返回的是undefined——因为Node的global对象默认没有name这个属性,这时候this.name才会是undefined,和你一开始预想的结果一致。

你还可以自己验证下:在浏览器控制台输入window.name,回车就能看到它默认是空字符串;要是你手动把window.name = "Test",再调用getEmployeeName(),就会返回"Test"啦。

内容的提问来源于stack exchange,提问作者georgej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:23:29