为了账号安全,请及时绑定邮箱和手机立即绑定

关于JavaScript this的问题

关于JavaScript this的问题

小唯快跑啊 2019-03-15 18:15:00
function foo(){  setTimeout(()=>{    console.log("is:",this.id);//42  },100)}var id = 21;foo.call({id:42})js中函数的this是动态的,要看运行时是谁调用的,在这里面foo内部的this指向匿名对象setTimeout是全局调用的箭头函数没有this 指向相邻的外层 即为setTimeout的this 所以为什么不是21 打印结果为什么是42???求大神详细解释?
查看完整描述

4 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

<input type="button" value="点击" id="btn">

<script>

    document.getElementById('btn').onclick = function () {

      /*var _this = this;

      setTimeout(function(){

        // 内部的this 默认指向window

        _this.value = '哈哈';

      }, 1000);*/


      // 箭头函数中的this, 永远指向它所在作用域中的this

      // 会捕获其所在上下文的  this 值,作为自己的 this 值

      setTimeout(() => {

        this.value = '哈哈';

      }, 1000);

    }

  </script>


查看完整回答
反对 回复 2019-03-24
  • 4 回答
  • 0 关注
  • 388 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信