Javascript“声明但从未使用过的变量”......即使我正在使用它?

我肯定错过了什么。


在下面的代码中,我清楚地声明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


ITMISS
浏览 150回答 2
2回答

慕莱坞森

这是因为范围而发生的,因为您仅在 if 语句中声明和定义了 loopingAdjustment 变量,因此范围仅限于 if 语句。要解决此问题,您可以在 if 之外声明 loopingAdjustment 并在 if 语句中分配它。您可以从下面的代码中获取参考,您可以修改 acc. 根据您的需要。const caesar = function(startingString, shiftAmount) {&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; let itemizedString = startingString.split('');&nbsp; &nbsp; const mappedLetters = itemizedString.map(stringLetter => {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; //turn each letter in array into their respective character code&nbsp; &nbsp; &nbsp; &nbsp; let thisLetter = stringLetter.charCodeAt(stringLetter);&nbsp; &nbsp; &nbsp; &nbsp; // checking if character is alphabetic and converting its charcode back to a letter&nbsp; &nbsp; &nbsp; &nbsp; if (thisLetter < 65 || (thisLetter > 90 && thisLetter < 97) || thisLetter > 122) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shiftedLetter = thisLetter + shiftAmount;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // making sure the shifted letters loop to beginning, or end, of alphabet&nbsp; &nbsp; &nbsp; &nbsp; let loopingAdjustment = 0;&nbsp; &nbsp; &nbsp; &nbsp; if (thisLetter > 96 && shiftedLetter > 122) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loopingAdjustment = shiftedLetter - 26;&nbsp; &nbsp; &nbsp; &nbsp; } else if (thisLetter > 96 && shiftedLetter < 96) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loopingAdjustment = shiftedLetter + 26;&nbsp; &nbsp; &nbsp; &nbsp; } else if (thisLetter < 91 && shiftedLetter > 90) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loopingAdjustment = shiftedLetter - 26;&nbsp; &nbsp; &nbsp; &nbsp; } else if (thisLetter < 91 && shiftedLetter < 65) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loopingAdjustment = shiftedLetter + 26;&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loopingAdjustment = shiftedLetter;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; let finalString = String.fromCharCode(loopingAdjustment);&nbsp; &nbsp; &nbsp; &nbsp; return finalString;&nbsp; &nbsp; });&nbsp; &nbsp; console.log(mappedLetters);&nbsp; &nbsp; return mappedLetters.join('');}module.exports = caesar

开心每一天1111

您在 let 有自己的范围的条件中声明 loopingAdjustment 。在条件句之外声明它,只在条件句中更改它的值一次。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript