Javascript 如何赋值?

Javascript 如何赋值?,javascript,function,variables,Javascript,Function,Variables,我试图在另一个函数中赋值,但它不起作用,正确的方法是什么 f = function () { var foo = 6; function() { foo = 4; }; alert(foo); }; f(); 必须初始化内部函数 f = function () { var foo = 6; return function() { foo = 4; alert(foo); }; }; f()(); 你没有调用这个函数。您需要这样做: f

我试图在另一个函数中赋值,但它不起作用,正确的方法是什么

f = function () {
  var foo = 6;
  function() {
     foo = 4;
  };
  alert(foo);
};
f();

必须初始化内部函数

f = function () {
  var foo = 6;
  return function() {
     foo = 4;
     alert(foo);
  };
};
f()();

你没有调用这个函数。您需要这样做:

f = function () {
  var foo = 6;
  var func = function() {
     foo = 4;
  };
  func();
  alert(foo);
};
f();

您在注释中指出,您的函数实际上是一个回调函数,这是一个完全不同的问题。如果您这样做:

f = function () {
  var foo = 6;
  somethingAsync(function() {
     foo = 4;
  });
  alert(foo);
};
f();
该函数将运行,但它将首先运行警报,您将看不到更新的值。相反,您应该将警报放在函数本身中:

f = function () {
  var foo = 6;
  somethingAsync(function() {
     foo = 4;
     alert(foo);
  });
};
f();
您从不调用x,因此值保持不变

var f1;
f1= function() {
     foo = 4;
     alert(foo);
  };
f = function () {
  var foo = 6;
  f1();

};

f();

Link:

你试过执行这个程序吗?是的,我试过了,但不起作用,实际上第二个函数是ajax回调函数看到了吗[要查看Action中的闭包谢谢,这是可行的,但是如果内部函数是ajax回调怎么办?foo的值会从6变为4吗?@sajadkk在调用回调时会变。我需要返回新值,可能吗?@sajadkk不,这是异步编程工作的一个重要部分。回调会在它们所在的函数之后运行,不是吗你确定这就是你“初始化”函数的方式吗?是的。我已经添加了演示
var f1;
f1= function() {
     foo = 4;
     alert(foo);
  };
f = function () {
  var foo = 6;
  f1();

};

f();