使用.bind()绑定函数时遭遇‘your match is undefined’错误的技术求助
问题分析与修复方案
嘿,我来帮你搞定这个问题~你现在遇到的your match is undefined问题,主要是两个小细节没处理好:
问题根源
result方法没有返回值:原来的club.result()只是用console.log输出结果,本身不会返回任何内容,所以当你在bayern函数里写this.result()时,这个表达式的结果就是undefined,自然会拼接出your match is : undefined。- 参数没正确传递:你调用
bayern(4,3)时传入的比分参数,没有传递给result方法,导致result里的a和b都是undefined,两个if判断都不会触发,连Win/lose的输出都看不到。
修复方案
1. 让result返回结果文本
把原来的console.log改成返回字符串,这样this.result()就能拿到具体的结果内容,而不是undefined。
2. 给result传递参数
在bayern函数里,把调用时传入的参数传递给this.result(),确保result能拿到比分值进行判断。
修正后的完整代码:
var club = { name : 'name', result :function(a,b) { if (a>b){ return 'Win'; // 改为返回结果字符串 } else if (a<b){ return 'lose'; } else { return 'Draw'; // 新增平局情况,逻辑更完整 } } } var bayern = function (a,b){ console.log('your match is : ' + this.result(a,b)); // 把参数传递给result }.bind(club); bayern(4,3); // 现在会输出:your match is : Win
现在再运行bayern(4,3),参数会正确传递给result方法,判断后返回Win,最终就能输出正确的结果啦~
内容的提问来源于stack exchange,提问作者Tennz
相关产品推荐
相关产品推荐

