这个问题是相关的,但不一样 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的例子。
答案 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
答案 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();