有人可以向我解释这个功能的作用吗?

时间:2017-08-11 09:21:53

标签: javascript

几个星期前我开始学习JavaScript,而且我总是发现自己陷入了循环问题。

就像在这个例子中,我不明白for循环的作用,有人可以给我一些如何理解这个的提示吗?

let upper = function(strings, ...values) {
    let result = '';
    for (var i = 0; i < strings.length; i++) {
        result += strings[i];
        if (i  < values.length) {
            result += values[i];
        }
    }
    console.log(result);
    return result.toUpperCase();
};

3 个答案:

答案 0 :(得分:2)

代码中的注释将解释这里发生的事情

//input is array with string and array with values.
//strings, ...values - that is means that first argument will be strings, but all arguments since first will be pushed into array called values
let upper = function(strings, ...values) {
  console.log(strings); // ['a', 'b'];
  console.log(values); // [1, 2];

  let result = ''; // result is an empty string
  for (var i = 0; i < strings.length; i++) { // looping the array of string
   result += strings[i]; // result = result + string from strings array at first iteration you will have result equal to 'a'
   if (i  < values.length) { //check do we have number i in values array
       result += values[i]; // if yes than result = result + string from vaulues. at first iteration you will have result equal to 'a' + 1 that is equal to 'a1'
   } // end of if
  } // and so on
  console.log(result); // 'a1b2'
  return result.toUpperCase(); // returning result in uppercase
};

var res = upper(['a', 'b'], 1, 2);
console.log (res); // 'A1B2'

答案 1 :(得分:-1)

它将您传入的字符索引中的字符串的特定字符替换为values的数组。

但是,有一个缺点 - 它不支持使用相应的string数组值替换传入values的第一个字符。

values可以是arraystring,但这并不能解决此功能的缺陷。

答案 2 :(得分:-1)

 let upper = function(strings, ...values) {  

这是一个函数声明,它将一个匿名函数存储在变量&#34; upper&#34;。

 let result = '';  

这会将空字符串分配给&#34;结果&#34;。

for (var i = 0; i < strings.length; i++) {
result += strings[i];
if (i  < values.length) {
   result += values[i];
}
}

for循环,遍历传递给匿名函数的字符串并将结果存储在&#34;结果&#34;中。如果有其他参数,则将这些参数存储在&#34;结果&#34;同样。

console.log(result);
return result.toUpperCase();
};

这里调用console.log并将result作为参数,然后在结果上运行本机toUpperCase方法后返回结果值。

你不能拥有这样的功能,它不会运行,参数不应该是&#34; ...值&#34;。但这就是它的作用,取一个值并将字符串作为大写字母字符串返回。