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

如何在findIndex函数中直接传入this.id而非赋值变量?

直接将this.id传入findIndex的两种方法

嘿,这问题很常见,其实有两种简单的方法可以直接把this.id传入findIndex的回调里,不用额外声明变量,我给你拆解一下:

方法一:使用箭头函数(推荐)

箭头函数不会绑定自己的this,它会继承外层函数(也就是slideUp的回调函数)的this指向。这样你就能在findIndex的回调里直接访问到this.id了:

listing.slideUp(500, function() {
  var index = cars.findIndex(car => car[0].id === this.id);
  if (index > -1) {
    cars.splice(index, 1);
  }
});

方法二:使用bind()绑定this

如果你需要兼容不支持箭头函数的旧环境,可以用bind()方法把外层的this绑定到findIndex的回调函数上,确保回调里的this和外层保持一致:

listing.slideUp(500, function() {
  var index = cars.findIndex(function(car) {
    return car[0].id === this.id;
  }.bind(this));
  if (index > -1) {
    cars.splice(index, 1);
  }
});

原理补充

为什么原来的代码需要额外声明listing_id?因为普通的function作为回调时,会创建自己的this上下文(通常指向全局对象或者undefined,取决于严格模式),没法直接访问外层slideUp回调里的this。而箭头函数或bind()能帮我们保留外层的this指向,所以就能直接用this.id啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:02:44