Попытка скопировать функцию с помощью .bind()

Здесь я пытаюсь получить оператор if(), используемый в переменной bayern, с помощью .bind(), но все, что я получаю, это «ваше совпадение не определено».


     var club = {
    name : 'name',
    result :function(a,b) {
        if (a>b){
            console.log('Win');
        }
        if (a<b){
            console.log('lose');
        }
    }
}

var bayern = function (){
    console.log('your match is : ' + this.result());
}.bind(club);

bayern(4,3);// i gave it as a score a=4,b=3.

это ошибка, которую я получаю

your match is undefined

Вы не вызываете result с какими-либо аргументами, поэтому его параметры a и b оба равны undefined. undefined < undefined и undefined > undefined оба ложны, поэтому ни одна из ветвей не выполняется, и ваша функция ничего не делает. Вам нужно принять параметры в bayern и передать их в result: var bayern = function(a, b) { console.log('...' + this.result(a, b)); }.bind(club);

T.J. Crowder 09.04.2022 11:40

спасибо @T.J.Crowder, поскольку я принимаю параметры в баварии и передаю их в результат, я получил «выигрыш», но утверждение «ваше совпадение не определено».

Tennz 09.04.2022 11:59
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
2
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как Т.Дж. Краудер уже сказал в комментарии, что вам нужно передать параметры a и b в вашу функцию result. Кроме того, вы, вероятно, не хотите интерполировать результат в вывод, поэтому вы должны вернуть его.

После рабочей реализации:

var club = {
    name: 'name',
    result: function(a,b) {
        if (a>b){
            return 'win';
        }
        if (a<b){
            return 'lose';
        }
    }
}

var bayern = function (a,b) {
    console.log('your match is : ' + this.result(a,b));
}.bind(club);

bayern(4,3);

спасибо @alexanderdavide !!! это просто решило это правильно !! но почему console.log не работал так, как работал return? благодарю вас?

Tennz 09.04.2022 12:11

Рад, что смог помочь! Тогда, пожалуйста, отметьте это как правильный ответ. console.log() сразу регистрирует значение при вызове, но вы, очевидно, хотите использовать result() в console.log() из bayern(), поэтому необходимо вернуть значение из result(). Если вы не укажете возвращаемое значение функции, она вернет undefined, что и произошло ранее.

alexanderdavide 09.04.2022 12:18

Другие вопросы по теме