funarg 問題

下記の bar() に渡す無名関数内の value が、どの値 (1 か 1000) にバインドされるかという問題を「funarg 問題 (Function Argument Problem)」というらしい。

function foo(value) {
  return bar(function() {
    return value * 2;
  });
}

function bar(func) {
  var value = 1000;
  return func();
}

var result = foo(1);
console.log(result);//2 or 2000?