javascript - 这个函数传递如何被视为分隔符和参数

标签 javascript

从这里学习 Javascript 函数 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions

我无法理解这个概念 - 逗号是如何分配给分隔符的?

 function myConcat(separator) {

   console.log(separator); // ,  -> how was this interpreted as comma?
   console.log(arguments.length); // 4
   var result = ''; // initialize list
   var i;
   // iterate through arguments
   for (i = 1; i < arguments.length; i++) {
      result += arguments[i] + separator;
   }
   return result;
}

myConcat(', ', 'red', 'orange', 'blue');

输出:

, 
4
red, orange, blue, 

最佳答案

让我们想象 arguments 不存在。然后可以这样写函数:

function myConcat(separator, ...array) {
  var result = ""; // initialize the resulting string
  // iterate over the array
  for (let i = 0; i < array.length; i++) {
    result += array[i] + separator;
   }
   return result;
}

现在很清楚 myConcat 函数有一个名为 seperator 的参数,后跟一个所谓的 rest parameter 数组。这意味着无论何时您调用该函数,第一个参数都会传递给分隔符,随后所有参数都会收集到 array 数组中。

 myConcat(/*seperator*/ "a",/*...array*/ "b", "n", "n", "!");

由于您来自 java 背景,因此用 java 编写的相同内容将是:

class Helpers {
  static String myConcat(String seperator, String[] ...array){
    String result = "";
    for(int i = 0; i < array.length; i++)
      result += array[i] + seperator;
    return result;
  }
}

关于javascript - 这个函数传递如何被视为分隔符和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597301/

相关文章:

javascript - 如何对具有相同键的对象值求和并返回一个对象?

javascript - 包含的 Javascript 页面的路径

javascript - 为 Angular 和 WebLogic 创建 IntelliJ 运行配置

javascript - 如何从 Astro 文件(服务器端)访问 url 查询参数?

javascript - 是任何 float | 0 = 固定数?

javascript - 如何从单击事件对象中获取链接的 href 属性的参数

javascript:将函数作为参数传递给另一个函数,代码以另一种顺序调用,然后我期望

javascript - 如何在knockout js组件中添加twitter关注按钮?

javascript - 延迟页面转换

javascript - 仅在背景图像 jquery mobile 上滚动内容?