代码块中this指向问题

不可名状邵雅虎 2021-11-30 13:55:06

如图,在区域中this指向并没有指向李四,而是undefined,这是啥情况啊,这里面的this指的难道不是黄色花括号的区域嘛?虽然直接用console.log(name)是可以输出李四的,就觉得疑惑。

 

 

 

...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
看客008 2021-12-01
  • 打赏
  • 举报
回复

你这个写法,this的指向是window,name只是声明的一个变量,不是window的一个属性,如果你吧let name='李四'改成 this.name = '李四',就会输出李四了

  • 举报
回复
@看客008 求教了,但是如果黄括号里的this指向window的话,那黄色的花括号的区域是不是不起作用?还是说最外围的区域默认为window? 另外还有一个疑惑,我将let修改为var也尝试过是不起作用的,和我认知产生偏差,var定义的变量不是顶级变量(window属性)嘛? 谢谢谢谢解答
看客008 2021-12-02
  • 举报
回复
@不可名状邵雅虎 所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。这里用let不可以是因为作用域不是全局作用域,你这里用let声明,去掉外层的花括号变成全局作用域就可以啦;var没有块级作用域,但是有函数作用域,你这里写的部分如果是写在全局作用域里,改成var name='李四'也是可以输出李四的,希望对你有帮助

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧