js 函数相互调用时,this 指向

新手上路,请多包涵

在 hello() 中调用 world() ,为什么 world() 中的 this 指向的是 window?
是不是因为在调用world()时,没有明确的使用对象或 this,所以 world() 中的 this 就指向了 window?
希望能大家的得到解惑。

<html>
<head>
<meta charset="utf8">
</head>

<body>
<button id="btn1">hello world</button>
<script type="text/javascript">
    document.querySelector("#btn1").addEventListener("click",hello);
    function hello()
    {
        console.log("hello 的 this")
        console.log(this)
        world();
    }
    
    function world()
    {
        console.log("world 的 this")
        console.log(this) // window
    }
</script>
</body>
</html>
阅读 2.6k
3 个回答

可以像你说的这么理解,函数默认的this指向就是window,严格模式是null

当函数做为对象的方法调用时,this指向这个对象,当函数直接被调用时,this指向window,严格模式指向null。你的world方法是直接调用,所以指向window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏