問題:どれが「クロージャ」でしょうか?

func1 から func10 までのどれが「クロージャ」でしょうか?

var scope = "global";

function func1 () {
  return scope;
}

var func2 = function () {
  return scope;
};

var func3 = new Function("return scope;");

function foo () {
  var scope = "function foo";

  function func4 () {
    return scope;
  }

  var func5 = function () {
    return scope;
  };

  var func6 = new Function("return scope;");

  var func7 = Function("return scope;");

  var func8 = eval("(function() { return scope; })");

  var e = eval;

  var func9 = e("(function() { return scope; })");
}

var obj = {
  scope: "obj",

  func10: function () {
    return scope;
  },
};

さて、スコープチェーンにグローバルしか持たないものをあえて「クロージャ」と呼ぶか否かで答えは変わってきてしまうけれども…。

あと、クロージャ

引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。

クロージャ - Wikipedia

を定義としてみましょうか。