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

为何向bind绑定的函数传参时,参数对应原函数的第二个形参?

关于JavaScript中bind()方法参数传递的解释

先看你的代码:

let info = {
  fname: "John",
  lname: "Smith"
}

const print = function(city, country) {
  console.log(
    `I am ${this.fname} ${this.lname}. Living in ${city}, ${country}`)
}

const bound = print.bind(info, "California")

bound('USA')

//output: I am John Smith. Living in California, USA

bind()方法除了绑定this指向,还有个核心作用:提前给原函数传入部分参数,这些参数会作为原函数的「前置参数」,按顺序占据原函数的形参位置。

具体到你的代码场景:

  • 调用print.bind(info, "California")时,第一个参数info用来绑定this指向,第二个参数"California"直接被设定为原函数print的第一个形参city的值。
  • 当你调用bound('USA')时,传入的'USA'会被追加到bind时传入的参数后面,自动成为原函数print的第二个形参country的值。

简单总结:bind的参数列表里,除了第一个this绑定值,剩下的参数会按顺序「占住」原函数的前面几个形参位置,后续调用绑定后的函数时,传入的参数会接着往后填充剩余的形参。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:52:03