【问题标题】:Javascript: Parameter is undefined?Javascript:参数未定义?
【发布时间】:2015-07-24 15:47:33
【问题描述】:

我最近开始学习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 这样的东西。

提前致谢。

【问题讨论】:

  • 您的问题是什么?无论您何时调用函数 swapCase,字母都会是您在括号中传递给它的任何内容。 swapCase(text) 只是说字母将等于 text
  • 当你把text放入参数中时,text在函数内部变成letters
  • letters 是调用swapCase(text); 时提供的占位符/ 参数,因此text 在函数内部变为letters

标签: javascript function for-loop


【解决方案1】:

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

if(letters === undefined) return false;

【讨论】:

    【解决方案2】:

    当你将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
    

    【讨论】:

      【解决方案3】:

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

      在此处定义 - function(letters){ - 作为函数的参数名称。

      这里调用函数时会传递一个值——swapCase(text);——其中text是上面一行中定义为字符串的变量。

      我相信它代表每个单独的字母,但它是在哪里定义的呢?

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-09-25
          • 2021-05-17
          • 2017-02-15
          • 2011-06-06
          • 2019-01-05
          • 1970-01-01
          • 2010-10-21
          • 2022-01-04
          相关资源
          最近更新 更多