我正在尝试跨函数传递变量,
像
function one() {
var x = 1
}
function two() {
var y = x + 1;
}
alert(y);
有办法吗?
edit:感谢大家的帮助,但是也许我应该更具体地回答我的问题。
答案 0 :(得分:0)
您将需要通过将变量声明提取到函数外部来提升作用域。也就是说,在功能之外定义x
和y
。请注意,您仍然可以通过函数中的来更新其值。但是,不要忘记,您实际上还需要同时调用这两个函数!
这可以在下面看到:
var x, y;
function one() {
x = 1;
}
function two() {
y = x + 1;
}
one();
two();
console.log(y);
答案 1 :(得分:0)
如果您真的想用一种方法声明变量,请返回它
function one(){
var x = 1;
return x;
}
function two() {
var x = one();
var y = x + 1;
return y;
}
alert(two());
答案 2 :(得分:0)
您当前的方式在函数范围内具有x和y,这意味着另一个函数不知道它的存在。同样,根据功能命名功能也是一种很好的做法。 3种直接的方法。
var x, y;
function assignOne() {
x = 1;
}
function addOne() {
y = x + 1;
}
assignOne();
addOne();
console.log(y);
function one() {
return 1;
}
function addOneTo(x) {
return x + 1;
}
const y = addOneTo(one());
console.log(y);
var x = null;
function one() {
x = 1;
}
function two() {
return x + 1;
}
one();
const y = two();
console.log(y);
答案 3 :(得分:0)
好像您想在两个函数之间具有共享状态,而不是传递参数。因此,面向对象的模式似乎是合适的。
class Thing {
constructor() {
this.x = 1;
}
one() {
return this.x;
}
two() {
return this.x + 1;
}
}
const t = new Thing();
console.log(t.one());
console.log(t.two());
答案 4 :(得分:0)
如果要在函数之间共享变量,但又不想在全局范围内声明它们,则可以使用如下所示的闭包:
(function() {
var x, y;
function one() {
var x = 1
}
function two() {
var y = x + 1;
}
one();
two();
alert(y);
})();