Javascript:参数未定义?

时间:2015-07-24 15:47:34

标签: javascript function for-loop

我最近开始学习javascript,这是一个练习题的答案(编写一个函数来交换字符串中每个字母的大小写):

var swapCase = function(letters){
    var newLetters = "";
    for(var i = 0; i<letters.length; i++){
        if(letters[i] === letters[i].toLowerCase()){
            newLetters += letters[i].toUpperCase();
        }else {
            newLetters += letters[i].toLowerCase();
        }
    }
    console.log(newLetters);
    return newLetters;
}

var text = "Life is 10% what happens to you, and 90% of how you REACT to it";
var swappedText = swapCase(text);

输出:

"lIFE IS 10% WHAT HAPPENS TO YOU, AND 90% OF HOW YOU react TO IT"

代码功能完备,完全符合它的需要,但我对letters的使用感到困惑。这不是我的代码。

参数letters没有链接到任何地方,这让我感到困惑。我相信它代表每个字母,但它定义在哪里?我熟悉Python,所以我期待像for i in list这样的东西。

先谢谢。

4 个答案:

答案 0 :(得分:1)

  

参数字母没有链接到任何地方

这里定义 - function(letters){ - 作为函数的参数名称。

在此处调用函数时传递一个值 - swapCase(text); - 其中text是在上面一行定义为字符串的变量。

  

我认为它代表每个字母,但它定义在哪里?

这是一个字符串。您可以使用方括号表示法访问characters in a string

答案 1 :(得分:1)

当您编写代码行swapCase(text)时,您将变量text传递给函数swapCase。函数内的letters变量被赋值为text的值。

答案 2 :(得分:1)

letters是一个函数参数,所以基本上当你调用swapCase(text)时,该函数需要text并将其分配给letters。如果你调用没有像swapCase()这样的参数的函数,那么你基本上将undefined传递给这个函数,并将其分配给letter。您可以在函数开头快速检查以检查它。

if(letters === undefined) return false;

答案 3 :(得分:1)

当您在参数中添加text时,text会在函数内变为letters

var swapCase = function(letters){  //anything you put as a parameter in this function will become 'letters'
var newLetters = "";
for(var i = 0; i<letters.length; i++){
    if(letters[i] === letters[i].toLowerCase()){  //letters[i] represents the character in the 'i' position (which is assigned in the for loop) in the string you added as a parameter.
        newLetters += letters[i].toUpperCase();
    }else {
        newLetters += letters[i].toLowerCase();
    }
}
console.log(newLetters);
return newLetters;
}

var text = "Life is 10% what happens to you, and 90% of how you REACT to it";
var swappedText = swapCase(text); // You are adding the text string as a parameter in the function, thus it becoming the letter variable inside the function