如何将多个变量从函数传递给函数

时间:2015-10-31 22:03:32

标签: javascript

  

这个问题是相关的,但不一样   javascript: get a function's variable's value within another function   &安培;   How do i pass variables between functions in javascript

我一直想知道如何将变量从一个函数传递到另一个函数,可以在上面找到答案。但更大的问题是如何传递多个变量,感觉上面找到的答案的语法可能变得过于复杂,最终变得难以理解。

不要介意我在示例中添加和警告。 这是一个dummie示例,如下面的exaple所述。此问题的目的在下面的段落中以粗体清楚地说明。

所以这是我的问题,如何将多个变量从一个函数传递到另一个函数,例如:



function definingVars() {
  var one = 1;
  var two = 2;
  var three = 3;
  var four = 4;
  var five = 5;
  var six = 6;
  var seven =  7;
  var eight = 8;
  var nine = 9;
  var ten = 10;
}

function addingUp() {
  definingVars();
  alert("Alerting var total");
  var total = one + two + three + four + five + six + seven + eight + nine;
  alert(total);
  alert("Alerting var ten");
  alert(ten);
}




我知道这不是解决这个问题的正确方法。但是我试图在这里做一个dummie的例子。

3 个答案:

答案 0 :(得分:4)

返回其属性包含所需值的对象:

function definingVars() {
  return {
    one: 1,   two: 2,     three: 3,   four: 4,   five: 5,
    six: 6,   seven: 7,   eight: 8,   nine: 9,   ten: 10
  };
}
function addingUp() {
  var data = definingVars();
  return data.one + data.two + data.three + data.four + data.five
         + data.six + data.seven + data.eight + data.nine;
}

如果你想避免重复data,你可以使用with,但请注意它是慢的,不好的做法,不允许在严格模式下使用:

function addingUp() {
  with(definingVars()) {
    return one + two + three + four + five + six + seven + eight + nine;
  }
}

答案 1 :(得分:1)

如果"变量"名称不固定,您可以执行以下操作

ActiveAdmin.register ActsAsTaggableOn::Tag::Translation, :as => "TagTranslation" do
  controller do
    def permit_params
      params.permit! # allow all parameters
#      params.permit acts_as_taggable_on_tag_translation: [:name, :tag_id, :locale]
#      params.require(:acts_as_taggable_on_tag_translation).permit(:name, :tag_id, :locale)
    end
  end
end
  • 使用Object.keys从对象中获取键数组
  • 使用Array.filter从添加中排除任何键
  • 使用Array.map将键映射到值
  • 使用Array.reduce循环将它们加在一起的值

答案 2 :(得分:1)

或者你可以这样做:

 function definingVars() {
   var one = 1;
   var two = 2;
   var three = 3;
   var four = 4;
   var five = 5;
   var six = 6;
   var seven =  7;
   var eight = 8;
   var nine = 9;
   var ten = 10;
   return [one, two, three, four, five, six, seven, eight, nine, ten];
 }

 function addingUp() {
   var sum = definingVars().reduce(function(a, b) {
     return a + b;
   });
   return sum;
 }

 addingUp();