首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量a如何具有本地范围及其始终返回的窗口对象(通过这个关键字指向)

变量a如何具有本地范围及其始终返回的窗口对象(通过这个关键字指向)
EN

Stack Overflow用户
提问于 2021-05-28 04:16:43
回答 1查看 39关注 0票数 0

我问了一个关于以下代码的问题:

var b = function a(){}; b();

推荐: Why no error in writing wrong code in JS (wrong way of writing and executing a function)

我说过,下面的代码应该会出现错误,因为这是无效代码。函数只有两种定义方法- function a(){}var a = function(){}。所以上面的代码是无效的,应该是错误的。

一位朋友回答说,上面的代码是有效的,而且a具有本地范围.现在,我尝试了各种代码,但是a总是返回全局范围。如果他说a has local-scope是真的,那么如何找到本地作用域,因为this keyword应该并且总是返回本地作用域或指向某个对象。

问题是它总是返回window-object,所以他(我的朋友)是错的。请解释或帮助!!

我试过:

var b = function a(){console.log(this);} b();

var b = (function a(){console.log(this);})();

结果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 04:19:27

这里有两个完全独立的概念:

  • this指的是函数
  • 中的标识符a可以引用的范围(

)

您是正确的,因为当调用不属于对象的普通、未绑定、非箭头的函数时,this指的是窗口,如b()

您的朋友是正确的,因为标识符a仅可在函数中引用-它不是全局变量,而是函数的本地变量。请参见:

代码语言:javascript
复制
console.log(typeof a);
var b = function a() {
  console.log(typeof a);
}
b();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67732863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档