Javascript «переменная объявлена, но никогда не использовалась» ... хотя я ее использую? - PullRequest
0 голосов
/ 20 июня 2020

Мне что-то не хватает.

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

Почему VSCode говорит, что он «никогда не использовался», и почему мой терминал говорит, что он «не определен»?

Спасибо.

const caesar = function(startingString, shiftAmount) {
    
    let itemizedString = startingString.split('');

    const mappedLetters = itemizedString.map(stringLetter => {
        
        //turn each letter in array into their respective character code
        let thisLetter = stringLetter.charCodeAt(stringLetter);

        // checking if character is alphabetic and converting its charcode back to a letter
        if (thisLetter < 65 || (thisLetter > 90 && thisLetter < 97) || thisLetter > 122) {
            return;
        } else {
            shiftedLetter = thisLetter + shiftAmount;
        }
        
        // making sure the shifted letters loop to beginning, or end, of alphabet
        if (thisLetter > 96 && shiftedLetter > 122) {
            let loopingAdjustment = shiftedLetter - 26;
        } else if (thisLetter > 96 && shiftedLetter < 96) {
            let loopingAdjustment = shiftedLetter + 26;
        } else if (thisLetter < 91 && shiftedLetter > 90) {
            let loopingAdjustment = shiftedLetter - 26;
        } else if (thisLetter < 91 && shiftedLetter < 65) {
            let loopingAdjustment = shiftedLetter + 26;
        } else {
            let loopingAdjustment = shiftedLetter;
        }

        let finalString = String.fromCharCode(loopingAdjustment);

        return finalString;


    });

    console.log(mappedLetters);

    return mappedLetters.join('');

}

module.exports = caesar

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Это происходит из-за области видимости, поскольку вы объявили и определили переменную loopingAdjustment только внутри оператора if, поэтому область действия ограничена оператором if. Чтобы исправить это, вы можете объявить loopingAdjustment вне if и назначить его внутри оператора if. Вы можете взять ссылку из приведенного ниже кода и изменить cc. для ваших нужд.

const caesar = function(startingString, shiftAmount) {
    
    let itemizedString = startingString.split('');

    const mappedLetters = itemizedString.map(stringLetter => {
        
        //turn each letter in array into their respective character code
        let thisLetter = stringLetter.charCodeAt(stringLetter);

        // checking if character is alphabetic and converting its charcode back to a letter
        if (thisLetter < 65 || (thisLetter > 90 && thisLetter < 97) || thisLetter > 122) {
            return;
        } else {
            shiftedLetter = thisLetter + shiftAmount;
        }
        
        // making sure the shifted letters loop to beginning, or end, of alphabet
        let loopingAdjustment = 0;
        if (thisLetter > 96 && shiftedLetter > 122) {
            loopingAdjustment = shiftedLetter - 26;
        } else if (thisLetter > 96 && shiftedLetter < 96) {
            loopingAdjustment = shiftedLetter + 26;
        } else if (thisLetter < 91 && shiftedLetter > 90) {
            loopingAdjustment = shiftedLetter - 26;
        } else if (thisLetter < 91 && shiftedLetter < 65) {
           loopingAdjustment = shiftedLetter + 26;
        } else {
           loopingAdjustment = shiftedLetter;
        }

        let finalString = String.fromCharCode(loopingAdjustment);

        return finalString;


    });

    console.log(mappedLetters);

    return mappedLetters.join('');

}

module.exports = caesar
0 голосов
/ 20 июня 2020

Вы объявляете loopingAdjustment внутри условных выражений, которые имеют свою собственную область видимости. Объявите его вне условных выражений, только один раз и измените его значение только внутри условных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...