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