Моя функция JavaScript не работает. Пытаюсь сравнить две функции и вернуть оператор во второй функции

Привет, сообщество StackOverflow!

Я здесь новичок и только начал изучать JS через Odin Project. Я работаю над своим первым JS-проектом (камень, бумага, ножницы) и застрял....

Я подытожу свои намерения ниже, а затем мой код.

// Пользователь вводит значение камня, бумаги или ножниц

//С пользовательским значением оно будет сравниваться со значением выбора компьютера наугад

//В зависимости от этого сравнения как пользовательского ввода, так и сгенерированного компьютером, будет предоставлен оператор return

Перепробовали почти все и не знаете, как двигаться дальше! Пожалуйста помоги.

    function computerPlay() {
        let gameOptions = ['rock', 'paper', 'scissors'];
        const gameChoice = Math.floor(Math.random() * gameOptions.length);

        console.info(gameChoice, gameOptions[gameChoice]);
    }

    

    
    function playRound(playerSelection,computerSelection){

        
        
        if (playerSelection === 'rock' && computerSelection === 'paper') {
            return console.info('You lose! Paper beats rock.');
        }else if (playerSelection === 'paper' && computerSelection === 'scissors') {
            return console.info('You lose! Scissors beats paper.');
        }else if (playerSelection === 'scissors' &&  computerSelection === 'rock') {
            return console.info('You lose! Rock beats scissors');
        }else if (playerSelection === 'rock' && computerSelection === 'rock') {
            return console.info('Its a draw!');
        }else if (playerSelection === 'paper' && computerSelection === 'paper') {
            return console.info('Its a draw!');
        }else if (playerSelection === 'scissors' && computerSelection === 'scissors') {
            return console.info('Its a draw!');
        }else if (playerSelection === 'paper' && computerSelection === 'rock') {
            return console.info('You win!')
        }else if (playerSelection === 'rock' && computerSelection === 'scissors') {
            return console.info('You win!')
        }else {
            return console.info('You win!')
        }
        
    }
    
    
        const playerSelection = prompt('Choose either rock, paper, or scissors', '');
        const computerSelection = computerPlay();

        console.info(playRound(playerSelection, computerSelection));

Я надеялся, что условный оператор во второй функции сможет это сделать. Все еще пытаюсь разобраться с функциями, параметрами и аргументами.

Любая помощь будет БОЛЬШИМ образом оценена!! Спасибо.

Первый шаг, вероятно, возвращает gameChoice из computerPlay(). Поскольку это присваивание ничего не делает, поэтому вы вызываете playRound с undefined в качестве второго параметра во всех случаях.

Lars Holdaas 10.12.2020 02:59

Ты был прав! Я ничего не вернул, поэтому никакой ценности. Спасибо за помощь человеку

Albert Yoo 10.12.2020 21:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

computerPlay() не возвращает никакого значения. Так что computerSelection будет неопределенным.

Кроме того, измените эту строку console.info(playRound(playerSelection, computerSelection)); на просто playRound(playerSelection, computerSelection); и удалите операторы return из playRound().

Кроме того, ваша логика может быть значительно упрощена. Например, if (playerSelection === computerSelection) console.info("It's a draw");

Эй, мужик, спасибо за помощь. Я думал, что computerPlay() возвращает случайное значение из массива gameOption? ха-ха, спасибо за совет по упрощению, считайте меня полным новичком в JS!

Albert Yoo 10.12.2020 03:24

Функция computerPlay не возвращает никакого значения. Я думаю, вы должны утешить каждое значение, прежде чем делать playRound

Я думал, что он возвращает значение из массива gameOptions? хм. В любом случае, спасибо за помощь, чувак.

Albert Yoo 10.12.2020 03:26

Вы были правы, я должен был сначала вернуть их, чтобы получить ценность. Спасибо за помощь, очень признателен.

Albert Yoo 10.12.2020 21:14

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